스크립트는 루프를 통해 배열에 값을 추가한 다음 배열의 모든 항목을 표시해야 합니다.
#!/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