繁体   English   中英

Shell 脚本:如何在 if else 语句中执行多个条件

[英]Shell Scripting: How to do multiple conditions in if else statement

我应该如何用多个条件来表达 if 语句:

if [ <T/F Condition> ] && [ <T/F Condition> ] && [ <T/F Condition> ]

或者

if [ <T/F Condition> && <T/F Condition> && <T/F Condition>]

?

正如“man test”所展示的那样,“-a”代表“and”。

例如。:

if [ <T/F Condition> -a <T/F Condition> -a <T/F Condition> ]

也要注意间距。

&&是 shell 运算符,在cmd1 && cmd2中,它告诉 shell 如果第一个命令成功,则只运行第二个命令。

因此,这有效,并且可以满足您的要求:

if [ "$x" = a ] && [ "$y" = b ]; then ...

然而,在这:

if [ "$x" = a && "$y" = b ]; then ...

要运行的命令将是[ "$x" = a and "$y" = b ] ,其中第一个将给出缺少]参数的错误。 (在这里,请记住[是一个常规命令,类似于echo左右,它只是有一个有趣的名字。)

此外,您应该避免这种情况:

if [ "$x" = a -a "$y" = b ]; then ...

即使它在一些简单的情况下也可以在某些 shell 中工作。 当变量包含字符串时,这与解析问题有关! (否定)或其他作为[的运算符。 同样,由于[是一个常规命令,而不是特殊的 shell 语法,它无法分辨哪个 arguments 来自变量,哪些是硬编码运算符。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM