GNU/Linux >> Linux の 問題 >  >> Linux

Bash For Loopsの「do」キーワードの目的は?

doの目的は何ですか Bashのキーワードfor ループ構文?私には、それは冗長だと感じます。

for i in `seq 1 2`; do echo "hi"; done

なぜこのような構文ではないのですか?

for i in `seq 1 2`; echo "hi"; done

きっと 目的を果たします。学びたいだけです。

承認された回答:

構文はBourneシェルから継承されていることに注意してください。

変数名の後に、inのいずれかを含めることができます 要素のリストを明示的に指定するか、do 、位置パラメータをループします。

for i in 1 2 3
do
  echo "$i"
done

または

set 1 2 3
for i do
  echo "$i"
done

doを持つ どちらの場合も(最初の場合は厳密に必要ではない場合でも)、構文の一貫性が高まります。 whileとも一致します /until doがループする場所 必要です。

while
  cmd1
  cmd2
do
  cmd3
  cmd4
done

doが必要です 状態のリストがどこにあるかを示す コマンドは終了します。

Bourneシェルはfor i; do 。その構文も、2016年版の標準(for i do)までPOSIXではありませんでした。 常にPOSIXでした。関連するオースティングループのバグを参照してください。

zsh 次のようないくつかの省略形があります:

for i in 1 2 3; echo $i
for i (1 2 3) echo $i
for ((i=1;i<=3;i++)) echo $i

または、複数の変数のサポート:

for i j (1 a 2 b) echo $i $j

(ただし、inは使用できません またはdo jの代わりに変数名として 上記)。

文書化されることはめったにありませんが、ほとんどのBourneのようなシェル(Bourne、ksh、bash、zsh、ashではありません) また、yash )サポート:

for i in 1 2 3; { echo "$i";}

Bourneシェル、ksh およびzsh (ただし、bashではありません )サポート:

for i { echo "$i"; }

bashksh およびzsh (Bourneシェルではありません)サポート:

for i; { echo "$i"; }

すべて(Bourne、bashkshzsh )サポート:

for i
{ echo "$i";}

ksh93bashzsh サポート:

for ((i=1;i<=3;i++)) { echo "$i"; }

Linux
  1. コマンドラインでの毎日のBashのヒント

  2. cpコマンドの2つの優れた使用法:Bashショートカット

  3. Bashビルトインコマンドの個々のマニュアルページを取得しますか?

  1. バッシュシェルが算術オーバーフローなどを警告しない理由は?

  2. 現在の週の月曜日の日付を出力します (bash で)

  3. Debian VM の Bash の解像度を変更するにはどうすればよいですか?

  1. Linuxスクリプト:Bashでのwhileループの3つのハウツー

  2. .bashrcの目的とそれはどのように機能しますか?

  3. Bashの完了が代替案を循環することは可能ですか?