Bashの変数から1行ずつ読み込む方法

Bashの変数から1行ずつ読み込む方法

変数を1行ずつ読み込む方法

 PROMOTEBUILDS=3.1.161,1.0.132
    echo cat ${PROMOTEBUILDS} | while read -r line; do
    egrep $line /home/rahul-optit/packages
    done

答え1

bashを使用しているので、以下を使用する必要があります。大量に変数の代わりに:

promotebuilds=( 3.1.161 1.0.132 )
for i in "${promotebuilds[@]}"; do
  egrep "$i" /home/rahul-optit/packages
done

答え2

@Jesse_bの答えがこれを行う方法です。

ただし、入力に影響を与えない場合は、およびをIFS=,使用してread文字列を分割して配列にすることができます。

printf '%s' "$PROMOTEBUILDS" | IFS=, read -a promotebuilds
for i in "${promotebuilds[@]}"; do
  egrep "$i" /home/rahul-optit/packages
done

答え3

たぶん私はその質問を理解していないかもしれません。一方では、変数に行が1つしかないようです。

その間、私は通常のファイルから行を読み取るのと同じ方法で変数から行を読みました。ただし、変数を引用符で囲み、「<」の代わりに「<<<」を使用してwhileサイクルに入力します。

VARIABLE=$(cat somefilewithmultiplelines)
while read i ; do echo "$i" ; done <<< "$VARIABLE"

関連情報