• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:shell 変数について)

シェル変数の上限と数値代入について

このQ&Aのポイント
  • シェル変数の上限は2147483647であるため、2147483648以上の数値を代入することはできません。
  • 質問者は、シェルスクリプトで変数に2147483648以上の数値を代入すると、値がマイナスになってしまう現象に遭遇しました。
  • スクリプト内で数値を扱う場合は、上限値を超えないように注意する必要があります。

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4900/10359)
回答No.1

シェル変数自体は文字列なので、どんな桁数でも代入できます。 expr による計算が 2の31乗-1 までなんでしょうね。bcを使って firstno=`echo $firstno + 1 | bc` だともっと長く(メモリが許す限り無限長)計算できます。

noname#229153
質問者

お礼

こんばんは。 先日は回答ありがとうございました。 教えていただいたとおり修正したところ、 上手くいきました!! 本当にありがとうございます。

noname#229153
質問者

補足

ご回答ありがとうございます。 記載したプログラムの2行目 firstno=$1の後にすぐ echo $firstno を埋め込み、第一引数に12345678901(11桁) を与えて実行したところ、echoで表示されたfirstnoは既に -2394855989(例です)のようにマイナスのおかしな値で 表示されました。この場合もexprの箇所に教えていただいたように bcを使えば正常に計算されるのでしょうか? それともfirstno=$1の箇所で何か記述が必要でしょうか? 違うパソコンで動かしているので、今確認できないんです。。 すみませんが、ご回答よろしくお願いいたします。

関連するQ&A

専門家に質問してみよう