シェルスクリプトでループを使用して増加する数値の変数値を印刷するには?

シェルスクリプトでループを使用して増加する数値の変数値を印刷するには?

多くの値を計算し、各行に数値を持つ変数に格納するBashスクリプトがあります。たとえば、TC_5入力csvファイルの5行目の値を計算するasという変数があります。すべての値を計算し、命名規則に従って変数に保存したので、TC_<Row_No>200行目の値を次の場所に保存しました。

TC_1
TC_2
.
.
TC_200

これで、これらすべての変数の値を手動で印刷するのではなく、外部ファイルに一緒に印刷できるループを作成したいと思います。これを行うには、次のwhileループを使用します。

i=0
while [ "$i" != 201 ]
do
    echo "TC_$i" >> Out
    i=`expr $i + 1`
done

echoステートメントが変数をファイルTC_<RowNo>に印刷するように上記のコードをどのように変更しますか?Out

ベストアンサー1

[ "$i" != 201 ]条件は常にtrueなので、現在のスクリプトは無限ループに閉じ込められています。

$i繰り返すたびに増加して使用する必要があります。評価するTC_<RowNo>変数の内容を印刷します(ただし、安全ではない):

i=1
while [ "$i" -ne 201 ]
do
    eval printf '%s\\n' "\${TC_$i}"
    i=$((i+1))
done >> "Out"

最初$iから1使用は-ne整数比較を実行し、ループの終わりにリダイレクトされますwhile

おすすめ記事