在 bash 中声明数组时出现意外标记“(”附近的语法错误

Bac*_*ash 4 bash syntax-error maven

我必须对我拥有的一些 EAR 进行几次 maven 测试。

我想编写一个自动执行该过程的 shell 脚本,而不是手动执行这些操作。

这就是我所拥有的:

#!/bin/bash
projects = ("MAIN_EAR", "EJB_EAR", "SIT_EAR", "ENC_EAR", "ENVIRONMENT_EAR", "PRESS_EAR")

myenvs  = ("dev", "cart")

for prj in "${projects[@]}"
do
    :
    for myenv in "${myenvs[@]}"
    do
       :
       mvn –am –pl "../$prj" clean package –Denvironment=$myenv
    done
done
Run Code Online (Sandbox Code Playgroud)

这是输出:

back@slash-PC:~/workspace/WSP$ bash maven_tests.sh
maven_tests.sh: line 2: Syntax error near unexpected token "("
maven_tests.sh: line 2: `projects = ("MAIN_EAR", "EJB_EAR", "SIT_EAR", "ENC_EAR", "ENVIRONMENT_EAR", "PRESS_EAR")
Run Code Online (Sandbox Code Playgroud)

bash 似乎不喜欢我声明数组的方式。

我错过了什么?


如果有帮助:我在 Xubuntu 14.04 x64

nos*_*nos 5

=在 bash 中定义变量时,周围不能有空格。此外,数组元素用空格分隔,而不是用,. 你必须使用例如

myenvs=("dev" "cart")
Run Code Online (Sandbox Code Playgroud)


anu*_*ava 4

存在一些语法错误,尤其是在声明 BASH 数组时。(数组声明中的空格=以及数组元素之间使用逗号)。

\n\n

试试这个代码:

\n\n
#!/bin/bash\nprojects=("MAIN_EAR" "EJB_EAR" "SIT_EAR" "ENC_EAR" "ENVIRONMENT_EAR" "PRESS_EAR")\n\nmyenvs=("dev" "cart")\n\nfor prj in "${projects[@]}"; do\n    for myenv in "${myenvs[@]}"; do\n       mvn \xe2\x80\x93am \xe2\x80\x93pl "../$prj" clean package \xe2\x80\x93Denvironment="$myenv"\n    done\ndone\n
Run Code Online (Sandbox Code Playgroud)\n