shell, while input 이 pipe 와 redirection 차이가 뭔지 궁금합니다.
글쓴이: jai / 작성시간: 수, 2008/01/23 - 9:00오후
infile=$1 # declare an array and an integer declare -a linearray declare -i counter=0 # read file to linearray cat $infile | while read line do linearray[${counter}]=$line let counter+=1 done echo "counter:$counter" # counter:0 , 초기값이 출력됩니다.
while 내부에서 변수값을 변경했지만,
while 구문 밖에서는 변경 전의 변수값이 됩니다.
while 구문 밖에서 counter가 0이 되는 것입니다.
while 구문이 child 쉘로 실행되고,
child 에서 변경한 변수값은 parent 에서 참조못한다고 생각했습니다.
그런데 아래 쉘을 보면, 제가 틀렸나봐요.
while input 으로 pipe 인거냐, redirection 인거냐 차이인데요.
이런 차이가 왜 생기는 건지 쪼매한 힌트라도 부탁드려요.
더 찾아볼께요.
# open file exec 3<$1 # declare an array and an integer declare -a linearray declare -i counter=0 # read file to linearray while read line <&3; do linearray[${counter}]=$line ((counter++)) done #close file exec 3>&- echo "counter:$counter" # counter:600 등등 파일 줄 개수가 잘 출력됩니다.
Forums:
댓글 달기