変数を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"