我如何从bash中的变量中逐行读取

我如何从bash中的变量中逐行读取

如何逐行读取变量

 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

也许我不明白这个问题。一方面,您的变量似乎只有一行。

一直以来,我都以与从常规文件中读取行相同的方式从变量中读取行,只不过我将其用引号引起来并使用“<<<”而不是“<”将其输入到 while 循环。

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

相关内容