次の構文を使用して繰り返すときに2つの角かっこが必要なのはなぜですか?
for (( expr1; expr2; expr3 ))
do
command1
command2
..
done
以下のコードは機能しませんか?そして「というエラーが発生します。予期しない表示'('の近くに構文エラーがあります.」
for ( expr1; expr2; expr3 )
do
command1
command2
..
done
答え1
その理由は(
異なる意味を持ちます。bash
マンページから:
(リスト)リストはサブシェル環境で実行されます。 (下記のコマンド実行環境を参照してください)置き換える シェルに影響を与える割り当ておよび組み込みコマンド コマンドが実行された後、環境は無効になります。 終わる。戻り状態はリストの終了状態です。 ((表現する)) 式は規則に従って評価されます。 算術評価については後述する。もし 式の値がゼロでない場合 状態は 0 で、そうでなければ戻り状態は 1 です。これは let "expression" とまったく同じです。