bash,如何使用OR || If语句中的运算符?
问题描述:
谁能告诉我什么是错的语法如下:bash,如何使用OR || If语句中的运算符?
if [ "$1" == "postfix" || "$1" == "all" ]; then
echo test
fi
答
二者必选其一
if [ "$1" = "postfix" ] || [ "$1" = "all" ]; then
或
if [ "$1" = "postfix" -o "$1" = "all" ]; then
||
结合了两个命令(和[
是一个命令)。在[
... ]
内,运营商-o
用于或。
另一种使用||
的方法是在[[
而不是[
内部使用它。
以任何方式,[
...... ]
之内的等于的正确运算符为=
,因为它是POSIX标准(根据man bash
)。虽然支持==
。
答
如果你想这样做,使用[[
测试形式:
if [[ $1 == "postfix" || $1 == "all" ]; then
[[
是类似(但更强大的一个bash关键字比)[
命令。见http://mywiki.wooledge.org/BashFAQ/031和http://mywiki.wooledge.org/BashGuide/TestsAndConditionals除非你正在编写POSIX SH,我们建议[[
或
if [ "$1" == "postfix" ] || [ "$1" == "all" ]; then
+0
我的回答没有太大差别,所以+ +从我;-) – Alfe 2014-12-04 00:02:11
'[a == b] || [c == d]'或'[a == b -o c == d]'。或者'[[...]]'而不是。 – Kevin 2014-12-03 23:56:16