Bash 스크립트를 실행할 수 없습니다(예기치 않은 요소 '(' )

Bash 스크립트를 실행할 수 없습니다(예기치 않은 요소 '(' )

Node, Npm, Bower, Susy가 설치되어 있는지 확인하는 스크립트를 작성했는데 실행하면 해결할 수 없다는 오류가 발생합니다.

스크립트는 다음과 같습니다.

    isInstalled(){
  command -v $1 >/dev/null 2>&1 || command -v $2 >/dev/null 2>&1 || { echo >&2 "I require $1 but it's not installed.  Aborting."; return false;}  
}

installNode() {
  if [[ !isInstalled('node', 'nodejs') ]]; then
    echo "Node is not installed. Installing..."
    curl https://www.npmjs.org/install.sh | sh
  fi
}

installBower()
{

   if [[ !isInstalled('npm') ]]; then
     echo "Npm is not installed. Installing..."
     curl -L https://npmjs.org/install.sh | sh
   else
     echo "Npm is installed. Checcking Bower..."
   if [[ !isInstalled('bower') ]]; then
     echo "Bower is not installed. Installing..."
     npm install -g bower
   fi

}

installSusy()
{

  if [[ !isInstalled('npm') ]]; then
     echo "Npm is not installed. Installing..."
     curl -L https://npmjs.org/install.sh | sh
   else
     echo "Npm is installed. Checcking Bower..."
   if [[ !isInstalled('bower') ]]; then
     echo "Susy is not installed. Installing..."
     npm install susy
   fi


}

오류 메시지는 다음과 같습니다.

begin.sh: 6: begin.sh: Syntax error: "(" unexpected (expecting "then")

답변1

의 함수는 bash다른 언어의 함수와는 달리 명령처럼 호출됩니다. 대신 isInstalled('node', 'nodejs')다음을 실행하세요.

isInstalled 'node' 'nodejs'

조건 if은 다음과 같습니다.

if ! isInstalled 'node' 'nodejs';
then
    ...

관련 정보