変数に複数のオプションを送信する方法

変数に複数のオプションを送信する方法

3つの追加変数を生成する変数配列に対してループを実行しています。

つまり

for foo in ${bar[@]};
    do bar1=$(echo $foo | awk '{print$1}');
       bar2=$(echo $foo | awk '{print$2}');
       bar3=$(echo $foo | awk '{print$3}');
done

ただし、ループが完了すると、新しく作成された3つの変数が配列自体である必要があり、forループを実行することもできます。

つまり

for foo in ${bar1[@]}
    do echo $foo
done

^^^^複数行を表示する必要があります。

誰でもこれを達成する方法を提案できますか?

答え1

使用

      bar1+=($(echo $foo | awk '{print$1}'))

つまり、配列に値を追加します。もちろんコードはvariable+=( value )使用配列bar1は次のようになります。

for foo in "${bar1[@]}"
do
    echo "$foo"
done

もちろん、妥当な理由がない限り、常にシェル変数(たとえば、"$foo"および)を引用する必要があります。"${bar1[@]}"確かにあなたは何をしているのか知っています。 

答え2

これには3つのパイプは必要ありません。read文字列から抽出する最初の3つのフィールドだけが必要です。

for foo in "${bar[@]}"; do
    read bar1 bar2 bar3 the_rest <<< "$foo"
done

the_restfooこれは、「abc d」のようなものが可能で、それをに設定したくない場合にのみbar3必要ですc d

関連情報