2012-04-26 20 views
4

私は強烈なbashスクリプトを作成してから、whileループで複数の条件を実行する構文を忘れてしまっています。 CではBashスクリプトで複数の条件を持つループの場合

、私がやるだろう:

for(var i=0,j=0; i<arrayOne.length && j<arrayTwo.length; i++,j++){ 
    // Do stuff 
} 

を私はしばらくの間、グーグルでてきたし、唯一のループのいずれかにループではなく、複数の条件のために、ネストされた関連する構文を発見しました。あなたがループため算術の話をしているよう

答えて

8

とそれを比較すれば、大きな違いはありませんがね。

ijが未設定またはゼロのいずれかであると仮定するとほぼ同等である
for ((i = j = 0; i < ${#arrayOne[@]} && j < ${#arrayTwo[@]}; i++, j++)); do 
    # Do stuff 
done 

:限り、あなたが後i/jの値を気にしないよう

while ((i++ < ${#arrayOne[@]} && j++ < ${#arrayTwo[@]})); do ... 

と少しポータブルループ。

3

あなたがC

for ((c=1,d=1; c<=5 && d<=6; c++,d+=2)) 
do 
     echo "$c : $d" 
done 
+0

これはCスタイルの構文ですが、私はそれを試していません。私は$ thingsのiのために のようなものにもっと興味がありました。 do .. done – Miles

+0

ループが1つしかない場合は、次のようにしてください: 'x [0] =" test 1 "; x [1] = "test 2"; "$ {x [@]}"のiのために; echo $ iを実行します。 done' – mata

+1

for 'は引数を反復します。それは "条件"とは関係がなく、ネストされていないcスタイルのループに相当することはできません。 'for i in" $ {arrayOne [@]} "" $ {arrayTwo [@]} ";各アレイの要素を順次反復することになる。 – ormaaj

関連する問題