ループを作成するには2つの異なる方法があることがわかりました。扱いにくい:
for x (1 2 3); do echo $x; done
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が若い頃にかなり一般的でしたが、今は消えています。これらの代替形式は、構文を除いて通常の形式とまったく同じように機能します。少し短いですが、あまり明確ではありません。
コマンドの標準形式for
はfor 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; done
for