- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:shell 変数について)
シェル変数の上限と数値代入について
このQ&Aのポイント
- シェル変数の上限は2147483647であるため、2147483648以上の数値を代入することはできません。
- 質問者は、シェルスクリプトで変数に2147483648以上の数値を代入すると、値がマイナスになってしまう現象に遭遇しました。
- スクリプト内で数値を扱う場合は、上限値を超えないように注意する必要があります。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
シェル変数自体は文字列なので、どんな桁数でも代入できます。 expr による計算が 2の31乗-1 までなんでしょうね。bcを使って firstno=`echo $firstno + 1 | bc` だともっと長く(メモリが許す限り無限長)計算できます。
お礼
こんばんは。 先日は回答ありがとうございました。 教えていただいたとおり修正したところ、 上手くいきました!! 本当にありがとうございます。
補足
ご回答ありがとうございます。 記載したプログラムの2行目 firstno=$1の後にすぐ echo $firstno を埋め込み、第一引数に12345678901(11桁) を与えて実行したところ、echoで表示されたfirstnoは既に -2394855989(例です)のようにマイナスのおかしな値で 表示されました。この場合もexprの箇所に教えていただいたように bcを使えば正常に計算されるのでしょうか? それともfirstno=$1の箇所で何か記述が必要でしょうか? 違うパソコンで動かしているので、今確認できないんです。。 すみませんが、ご回答よろしくお願いいたします。