2009-12-28 257 views
2

我對shell腳本非常陌生,我一直在努力處理下面的shell腳本。我發佈了腳本和我在下面用於考慮的命令,請幫我解決我犯的錯誤。Shell腳本錯誤

# 
# 
# 

DBG=0 
RLS=0 
ALL=0 
CLN=0 

print_help_uu() 
{ 
     echo "Usage: $0 -D -R -A -C "; 
     echo "Where -C clean the debug project builds"; 
     echo "  -D to build in DEBUG config"; 
     echo "  -R to build in RELEASE config"; 
     echo "  -A to build in both configs"; 
     return 
} 

# 
# Main procedure start here 
# 
# Check for sufficent args 
# 

if [ $# -eq 0 ] ; then 
     print_help_uu 
     exit 1 
fi  

# 
# Function to clean the project 
# 
clean() 
{ 
     if ["$DBG"="1"]; then 
      echo "Cleaning debug" 

      if ["$RLS"="1"]; then 
       echo "cleaning release + debug" 
      else 
       echo "This is bad" 
      fi 
     fi 

     if ["$RLS"="1"]; then 
      echo "Cleaning release " 
     fi 
     return 
} 


while getopts "DRAC" opt 
do 
     case "$opt" in 
       D) DBG=1;; 
       R) RLS=1;; 
       A) DBG=1;RLS=1;; 
       C) CLN=1;; 
       \?) print_help_uu; exit 1;; 
     esac 
     clean 
done 

我發佈了我用來運行它的命令以及使用這些命令時出現的錯誤。

---------- 
./BuildProject.sh -D 
./BuildProject.sh: line 36: [1=1]: command not found 
./BuildProject.sh: line 46: [0=1]: command not found 

----------- 
sh BuildProject.sh -D 
BuildProject.sh: 63: [1=1]: not found 
BuildProject.sh: 63: [0=1]: not found 

----------- 
sh ./BuildProject.sh -D 
./BuildProject.sh: 63: [1=1]: not found 
./BuildProject.sh: 63: [0=1]: not found 

我試圖用很多方式解決它,並在發佈之前用google搜索了很多。但我所有的審判都是徒勞的。請告訴我我在做什麼錯誤,因爲我是shell腳本的新手。

在此先感謝。

回答

6

[是一個命令,但您試圖調用該命令[1=1]。添加一些空白:

if [ "$DBG" = "1" ]; then 
2

我認爲這是一個 「空間」 的問題:儘量

if [ "$DBG" = "1" ]; then 

,而不是

if ["$DBG"="1"]; then 
4

試圖改變["$DBG"="1"](和if語句相似)到這一點: [ "$DBG" = "1" ] 即增加一些空間。

0

它在添加了一些額外的空間後工作。謝謝你們。它是一個腳本規則,將這些空間放在變量之間?我想我忽略了這個規則。謝謝你的時間。

+0

這是Bash中的語法規則。所有的腳本/編程語言都不需要它,但對於某些語言來說,Bash就是這樣一種語言。 – 2009-12-28 10:34:28

+0

謝謝埃米爾啓發我。 – Jabez 2009-12-28 10:57:55

1

確實是空間問題。

VAR=VALUE 

僅用於在殼變量聲明,而

VAR = VALUE 

僅用於可變測試。這很棘手,你只需要習慣它。

+0

得到了把戲Raphink。謝謝。 – Jabez 2009-12-28 10:58:28