쉘 프로그래밍에서.. awk와 while문의 조합루틴에서 while안의 변수값이 루프 빠져나가면 없어져요;;

furldi의 이미지


변수값 어떻게 가져오죠;;

예를 들어...

A="KOREA"

awk '{print $1}' a.txt |
while read LINE
do
A=$LINE
done

echo $A

이렇게 하면 A에 바뀐 값이 저장 되어야 하는데 그냥 "KOREA"로 나옵니다.
이건 단순히 예이고요, while문 안에서 어떤 변수값을 처리해서
빠져 나오면 while문 들어가기 전의 값으로 바뀝니다;;
while문 안에서는 정상적으로 나옵니다.

while문 안에서 처리된 값을 어떻게 가지고 나오죠??

esrevinu의 이미지

Quote:
Each command in a pipeline is executed as a separate process (i.e., in
a subshell).

Bash man page에 있는 말입니다.
while read LINE; do A=$LINE; echo $A; done < <(awk '{print $1}' a.txt)

이렇게 하면 되네요.