2012-02-01 4 views
1

は、私は私が= 09 価値を持っていたと私は$((バリュー))を使用したときにエラーが発生したことでbashスクリプトを書きましたのlinux

(エラー・トークンが「09」である)のベースには大きすぎるし、私はちょうどこのラインで新しいbashのファイルを作っ:

$((09)) 

を、これが再びエラーが発生しました。私はそのプログラムのために自分の道を変えましたが、この質問は私にとっては残っていました。なぜですか?どうしましたか?ちょうど08と09にこの問題があります。

答えて

1

ベースをbashで指定できます。 bash manualから

Value=09 
echo $((10#$Value * 2)) # ==> 18 

:ベース10を強制的に

定数をリード0と8進数として解釈されます。先頭の「0x」または「0X」は16進数を示します。それ以外の場合、数値は[base#] nの形式をとり、baseは算術ベースを表す2〜64の10進数で、nはそのベースの数値です。 base#を省略すると、base 10が使用されます。

5

09は、octalと解釈されます。小数を使用する場合は9を使用してください。

+0

はい、ありがとうございました。私は$((019))を設定しましたが、それも間違っていました。どのような悪い8進数を作る方法...! –

2

先頭のゼロは、の8進数(ベース8)の残りの数字を解釈することを意味します。これは数字0〜7しか許さないので、9は無効です。

のでecho $((0xFF))印刷プログラミング言語のほとんどで255

0

0で始まる番号がoctal numberとして扱われ、(ベース16)にも0xあります。