2009-12-28 166 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