sh: 구문 오류: '(' 예상치 못한 ('fi'가 예상됨)

sh: 구문 오류: '(' 예상치 못한 ('fi'가 예상됨)

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 구성이 필요하지 않습니다.

관련 정보