【问题标题】:Syntax error when running bash script in Homestead Vagrant在 Homestead Vagrant 中运行 bash 脚本时出现语法错误
【发布时间】:2016-08-19 08:34:55
【问题描述】:

我正在尝试在 Vagrant (vagrant ssh) 中运行脚本,但是我收到以下错误:

tests/unit/runTests.sh:4:tests/unit/runTests.sh:语法错误:“(”意外

命令:sh tests/unit/runTests.sh

对于 vagrant,脚本在外面运行良好,我能找到的关于 vagrant 的唯一脚本信息与规定有关,这不是我在这种情况下要做的。

脚本:

#!/bin/bash
i=0
fails=()

for d in tests/unit/*/ ; do
    eval "vendor/bin/peridot -c tests/unit/peridot.php $d"

    if [ $? -eq 1 ]
        then
            fails[$i]=$d
    fi
    wait
done

for ((j=0; j < ${#fails[@]}; j++)) do
    echo "${fails[$j]}"
done

我已经阅读了与破折号相关的“(”语法错误,但我正在使用这些帖子的建议 (#!/bin/bash)。

感谢您的任何建议。

【问题讨论】:

    标签: bash shell vagrant homestead


    【解决方案1】:

    命令:sh tests/unit/runTests.sh

    这意味着你 (vagrant) 试图在 'sh' 中运行你的脚本,而不是在 'bash' 中。在这种情况下,第一行 (#!/bin/bash) 将被忽略,并且 'sh' 解释不需要 '(' 字符。

    【讨论】:

    • ...因为 Bourne shell 或 POSIX sh 语言规范不支持数组。
    猜你喜欢
    • 2014-03-28
    • 2016-07-06
    • 1970-01-01
    • 2022-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-04
    • 1970-01-01
    相关资源
    最近更新 更多