使用if,elif,else的Bash脚本

时间:2015-10-05 05:18:39

标签: bash shell if-statement

好的,所以这是一个作业,所以我不会在这里输入确切的剧本,但我现在非常绝望,因为我无法想象基本的东西,如果有的话。所以我基本上检查在命令行中写入的两个参数是否合适(用户需要正确键入),否则它将回显特定的错误消息。但是,当我输入一个100%正确参数的命令时,我从第一个条件ALWAYS获得错误回显消息(即使我切换条件语句)。似乎脚本只运行第一个回声并停止,无论如何。请帮助,我理解它可能很难,因为我的代码更像是一个骨架。

 if [ ... ]; then
 echo "blah"

 elif [ ... ]; then
 echo "blah2"

else for file; do
#change file to the 1st argument

done 
fi 

我显然需要最后的其他事情,以便我的脚本实际上服务于其预期目的。但是,我的问题就是阻碍了。 if和elif需要返回false才能使脚本运行适当的参数。 if和elif检查该用户是否正确输入了命令行。

2 个答案:

答案 0 :(得分:2)

elif意味着别的 - 如果。因此,只会检查第一个语句是否返回false。所以如果你想检查两者是否正确呢。

if [ ... ] then
...
fi

if [ ... ] then
...
fi

答案 1 :(得分:0)

当您关心 条件时 他们必须满足条件的一套标准,然后你需要一个复合测试结构,如:

if [ "$1" = somestring -a "$2" = somethingelse ]; then
    do whatever
fi

也可以写

if [ "$1" = somestring ] && [ "$2" = somethingelse ]; then
...

注意:仍支持[ .... -a .... ]语法,但建议使用[ .... ] && [ .... ]语法进行新开发。

您还可以通过-o使用 OR 条件或使用第二种形式的||来改变测试方式(真/假)。您可以使用不同的测试表达式进一步改变您的测试(例如=!=-gt等。)