2014-10-06 93 views
4

聲明數組時,我必須做一些的EAR我有幾個Maven的測試。語法錯誤附近意外的標記「(」在bash

除了手動做他們的,我想寫一個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 

這是輸出:

[email protected]:~/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") 

看來,bash不喜歡我如何聲明數組。

我錯過了什麼?


如果有幫助:我在14.04的Xubuntu 64

回答

3

有ESP在聲明BASH陣列一些語法錯誤。 (在數組聲明中圍繞=的空格並在數組元素之間使用逗號)。

試試這個代碼:

#!/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 
+0

初學者的錯誤:P非常感謝! – BackSlash 2014-10-06 09:33:33

+0

不客氣,很高興它解決了。 – anubhava 2014-10-06 09:34:46

+1

@anubhava,編輯你的答案,指出語法錯誤 - 等號周圍的空格。 – 2014-10-06 10:39:58

4

在bash定義變量時,不能有=周圍的空間。另外,數組元素用空格分隔,而不是,。你必須使用例如

myenvs=("dev" "cart")