Bash 4.3에서는 작동하지만 Bash 3.2에서는 작동하지 않습니까?

Bash 4.3에서는 작동하지만 Bash 3.2에서는 작동하지 않습니까?

저는 stat를 사용하고 있는데 어떤 이유에서인지 최신 버전의 bash를 실행하는 서버 중 하나에서는 작동하지만 이전 버전에서는 작동하지 않습니다. 물론 이러한 오류는 매우 일반적이지만 다음 코드 블록에서 발생합니다.

while IFS='' read -r line || [[ -n $line ]]; do
IFS=' ' read size file <<< $line
containsElement "$(stat -c %U $file)" "${users[@]}"
if [ $(echo $?) == "1" ] ; then
    rm -f $DU_SAVE-$(stat -c %U $file)_du.txt
    users+=("$(stat -c %U $file)")
fi

echo $line >> $DU_SAVE-$(stat -c %U "$file")_du.txt
done < "${DU_SAVE}_du.txt"

프로그램의 사용은 그다지 중요하지 않지만 이전에 파일에 저장된 DU 명령에서 사용자 정보를 가져와 목록에 추가합니다. 문제는 다음과 같습니다.

stat: 피연산자가 없습니다. Try stat --help' for more information. stat: cannot stat': 해당 파일이나 디렉터리가 없습니다.

모든 파일에.

편집: 읽기 명령이 통계를 엉망으로 만들고 있다는 것을 알았습니다. 동일한 코드가 최신 bash 버전에서도 완벽하게 실행되며, 어쩌면 내 표현이 잘못되었을 수도 있습니다.

답변1

물론 해결책을 찾는데 시간이 좀 걸렸고, 여기에 물어보기로 했고, 물어보고 10분 안에 해결했습니다... 저는 이런 일을 자주 합니다.

해결책은 내 변수 분할 명령이 이 버전의 bash에서 작동하고 싶지 않았기 때문에 cut구분 기호를 사용했다는 것입니다 ' '. :)

관련 정보