변수를 한 줄씩 읽는 방법
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"