Shell Scripting错误

时间:2009-12-28 10:22:33

标签: unix shell scripting

我是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

我尝试以太多方式解决它并在发布之前搜索了很多内容。但我所有的考验都是徒劳的。请告诉我,由于我是shell脚本的新手,我在哪里犯了错误。

先谢谢。

5 个答案:

答案 0 :(得分:6)

[是一个命令,但您正在尝试调用命令[1=1]。添加一些空格:

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

答案 1 :(得分:4)

尝试将["$DBG"="1"](和类似的if语句)更改为:[ "$DBG" = "1" ] 即增加一些空间。

答案 2 :(得分:2)

我认为这是一个“空间”问题:尝试

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

而不是

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

答案 3 :(得分:1)

这确实是一个空间问题。

VAR=VALUE

仅用于shell中的变量声明,而

VAR = VALUE

仅用于变量测试。这很棘手,你只需要习惯它。

答案 4 :(得分:0)

在添加一些额外空格后工作。谢谢你们。将这些空格放在变量之间是一个脚本规则吗?我想我忽略了那条规则。谢谢你的时间。