私は最近bashスクリプトを使い始め、0000から9999まで計算されるスクリプトを書いてみました。かなり簡単な作業だと思いました。それからbashは0007を8進数として扱い、0009エラーを引き起こす問題に直面しました。 base10を使って解決策を見つけましたが、うまくいきません。私は何が間違っていましたか?問題のコードは次のとおりです。
guess=0000
for guess in $(seq -f "%04g" 0000 9999)
do
echo $((10#guess))
guess=$((10#guess+1))
done
ベストアンサー1
変数拡張としてマークするために、$
変数名の前に()を逃しました。$guess
for guess in $(seq -f "%04g" 0000 9999)
do
echo $((10#$guess))
guess=$((10#$guess+1))
done
そうしないと、算術拡張がその値ではなく文字通り$(())
評価され、guess
値が下数に比べて大きすぎるというエラーが発生します。