長い入力文字列の入れ子になったforループの書式設定に問題があります。
私は、現在省略している個々のプログラムの出力ファイル名を指定するために、次のネストされたforループを使用しています。
#!/bin/bash
for hemi in lh rh
do
for measure in thickness area volume meancurv gauscurv foldind curvind
do
echo ${hemi}"--"${measure}
done
done
変更する必要があるより長い配列のリストを使用して、さまざまなループを簡単に実行できるように、次のようにループ形式を指定できるようにしたいと思います。 1つの場所でリストを修正するだけで、エラー/欠落などの可能性が大幅に減少します。
#!/bin/bash
hemi=( lh rh )
measure=( thickness area volume meancurv gauscurv foldind curvind )
for((i=${hemi[${i}]};i<2;i++));do
for((j=${measure[${j}]};j<7;j++));do
echo ${hemi[${i}]}"--"${measure[${j}]}
done
done
これは私が得た結果であり、私が間違っているかどうかはわかりません。
lh--thickness
lh--area
lh--volume
lh--meancurv
lh--gauscurv
lh--foldind
lh--curvind
./for_loop_testing.sh: line 7: ((: j=: syntax error: operand expected (error token is "=")
ベストアンサー1
簡略化されたバージョンを提供します。
for i in "${hemi[@]}"; do
for j in "${measure[@]}"; do
echo "$i--$j"
done
done
要点は"${array[@]}"
すべての配列要素に拡張することなので、ここではすべての要素を繰り返し sum 変数に入れて印刷しますi
。j
注:特に要素にスペースを含めることができる場合は、変数と配列の周囲に二重引用符を付けることを忘れないでください。