ついに

ついに

次のbashコードを考えてみましょう。

i=1
while [ $i -le 50 ]
do
    echo $i
    i=$(($i+1))     #  <-------
done

鋭い線でどのくらいの括弧を使用することがなぜ重要ですか?これを書くと、コードは機能しません。

i=$($i+1)

なぜですか?

答え1

もちろん、これは全く異なります。私たちは集中する内蔵機能のみ:

$((...))算術置換です。算術演算が完了すると、内容全体が式の値に置き換えられます。バラよりhttp://mywiki.wooledge.org/ArithmeticExpression


((...))式が 0 でない場合は終了状態 0 を返し、式が 0 の場合は 1 を返す算術コマンドです。副作用(割り当て)が必要な場合は、「let」の同義語としても使用されます。バラよりhttp://mywiki.wooledge.org/ArithmeticExpression


コマンドの置き換え:"$(cmd "foo bar")""cmd"コマンドは "foo bar"引数で実行され、"$(..)"出力に置き換えられます。バラよりhttp://mywiki.wooledge.org/BashFAQ/002そしてhttp://mywiki.wooledge.org/CommandSubstitution


ついに

以下より良い/簡単な行を作成できますi=$(($i+1))

((i++))

のためloop

for i in {1..50}; do ...

または

for ((i=1; i<50; i++)); do ...

関連情報