zshとbashのForループ

zshとbashのForループ

ループを作成するには2つの異なる方法があることがわかりました。扱いにくい:

  1. for x (1 2 3); do echo $x; done
  2. for x in 1 2 3; do echo $x; done

それらはすべて次のように印刷します。

1
2
3

私の質問はなぜ2つの構文がありますか?$x他のものに対する繰り返しオブジェクトタイプそれらのそれぞれから?

する強く打つ同様の区別をしますか?

付録:

次はなぜ動作しますか? :

#!/bin/zsh
a=1
b=2
c=5    

d=(a b c)    
for x in $d; do print $x;done

しかし、これではありませんか? :

#!/bin/zsh
a=1
b=2
c=5

d=(a b c)    
# It complains with "parse error near `$d'"
for x $d; do print $x;done 

ベストアンサー1

さまざまな形式の複雑なコマンド(ループなど)に代替形態zshから。これらの形態のほとんどは以下からインスピレーションを得ました。Cシェル、これはzshが若い頃にかなり一般的でしたが、今は消えています。これらの代替形式は、構文を除いて通常の形式とまったく同じように機能します。少し短いですが、あまり明確ではありません。

コマンドの標準形式forfor x in 1 2 3; do echo $x; done、コマンドの標準形式whileはですwhile test …; do somecommand; done。 Ksh、bash、およびzshには、PascalやCなどの言語でループをエミュレートして整数を列挙する別の形式がforあります。 zshに存在する他のエキゾチックな形はzsh専用です(ただしcshからインスピレーションを受けたことが多いです)。for ((i = 0; i < 42; i++)); do somecommand; donefor

おすすめ記事