![파이프의 배열에 항목을 추가하는 방법은 무엇입니까? [복사]](https://linux55.com/image/71418/%ED%8C%8C%EC%9D%B4%ED%94%84%EC%9D%98%20%EB%B0%B0%EC%97%B4%EC%97%90%20%ED%95%AD%EB%AA%A9%EC%9D%84%20%EC%B6%94%EA%B0%80%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F%20%5B%EB%B3%B5%EC%82%AC%5D.png)
스크립트는 루프를 통해 배열에 값을 추가한 다음 배열의 모든 항목을 표시해야 합니다.
#!/bin/bash
data_file="$1"
down=()
counter=0
cat $data_file | while read line; do \
isEven=$(( $counter % 2 ))
if [ $isEven -eq 0 ]; then
down+=("$line")
fi
(( counter ++ ))
done
echo ${down[@]}
exit
하지만 내가 보는 것은 빈 문자열뿐입니다.
host@user$ sh script.sh data_file
host@user$
여기에는 다음이 data_file
포함됩니다.
81.11
11.63
81.11
11.63
81.11
11.63
81.11
11.63
내 실수는 어디에 있습니까? 감사해요.
답변1
하위 프로세스(블록 중 파이프라인)에서 이루어진 변수 업데이트를 참조할 수 없습니다.
대신 다음과 같이 입력 리디렉션을 사용하여 데이터를 제공하세요.
#!/bin/bash
data_file="$1"
down=()
counter=0
while read line; do
isEven=$(( $counter % 2 ))
if [ $isEven -eq 0 ]; then
down+=("$line")
fi
(( counter ++ ))
done < $data_file
echo ${down[@]}
exit