sh를 사용할 때는 오류가 발생하지만 bash를 사용할 때는 오류가 발생하지 않습니다. 이유를 아시나요?
$ sh test.sh
test.sh: 5: test.sh: Syntax error: "(" unexpected (expecting "fi")
#!/bin/bash
if [ 1 -eq 1 ]
then
declare -a methods=(Method1 Method2 Method3)
for i in "${methods[@]}"
do
echo $i
done
else
echo not found
fi
답변1
bash hashbang이 있고 sh를 사용하여 스크립트를 실행하고 있습니다. POSIX sh는 배열을 지원하지 않으며 일부 시스템에서는 여전히 작동할 수 있지만 이는 보장되지 않으므로 괄호에 대한 오류가 발생합니다.
사용 bash test.sh
하거나 실행 가능하게 만들고 해시뱅이 해석기를 결정하도록 하세요.
그리고 1은 항상 1과 같으므로 전체 if 구성이 필요하지 않습니다.