Forループフォーマット

Forループフォーマット

長い入力文字列の入れ子になった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 変数に入れて印刷しますij

注:特に要素にスペースを含めることができる場合は、変数と配列の周囲に二重引用符を付けることを忘れないでください。

おすすめ記事