语法错误:"("意外(期待"完成")

Ada*_*m_G 5 bash shell

我有一个非常简单的shell脚本,我用它来遍历目录,并调用另一个shell脚本.我在我的本地机器上运行它(OSX运行bash 3.2),并在运行bash 4.2的远程服务器上使用它.

在服务器上,当我输入时which bash,我得到了/bin/bash,所以我在顶部添加了这一行.我仍然得到这个错误,指向开始的行arrIN=...

8: run_all_verification.sh: Syntax error: "(" unexpected (expecting "done")
Run Code Online (Sandbox Code Playgroud)

shell脚本:

#!/usr/bin/bash
#base name for all experiments
BASE_EXP_ID=$1;

for i in ${BASE_EXP_ID}*
do
        #split file name by "__"
        arrIN=(${i//__/ });
        EXP_ID=${arrIN[0]}
        NUM_FEATURES=${arrIN[1]}
        echo "${EXP_ID} ${NUM_FEATURES}"

        sh run_verification.sh ${EXP_ID} ${NUM_FEATURES}

done
Run Code Online (Sandbox Code Playgroud)

tha*_*guy 18

您的错误消息来自dash,可能是因为您运行了sh filename.

bash使用bash filename(或./filename)运行脚本.

  • 永远不要用`sh`运行bash脚本.它几乎总是在Debian-ish发行版中失败,其中`sh`是`dash`.由于兼容性设置,它甚至可能在OS X上失败,其中`sh`是`bash`. (2认同)