ループ変数を使用して各ループから単語を取得する

ループ変数を使用して各ループから単語を取得する

私は各ループで単語を取得しようとしています。iに挿入する方法がわかりませんprint $2

while [ $i -lt 4 ] 
do
    A=$(awk -F_ '{print $2}' <<< 'one_two_test_three')
    echo $A
done

明らかに、これは次のように出力されます。

two
two
two
two

私が望むもの:

one
two
test
three

私は試した:

A=$(awk -F_ '{print $($i)}' <<< 'one_two_test_three')

役に立たない。

ベストアンサー1

正しい方法は、()オプションを使用してbash/shell変数をawk引数としてスクリプトに渡すことです。-vvariable

i=1;
while [ $i -lt 5 ]; do
    A=$(awk -v i="$i" -F_ '{ print $i }' <<< 'one_two_test_three')
    echo $A
    ((i++))
done

出力:

one
two
test
three

おすすめ記事