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或者只是使其可执行,然后让 hashbang 决定解释器。

而且 1 总是等于 1,所以你的整个 if 构造是不必要的。

相关内容