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"

관련 정보