Может кто-нибудь сказать мне, что это неправильно с этим синтаксисом:bash, как использовать OR || оператор в выражении If?
if [ "$1" == "postfix" || "$1" == "all" ]; then
echo test
fi
Может кто-нибудь сказать мне, что это неправильно с этим синтаксисом: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
[[
является Баш ключевым словом, аналогичным (но более мощным чем) команда [
. См http://mywiki.wooledge.org/BashFAQ/031 и http://mywiki.wooledge.org/BashGuide/TestsAndConditionals Если вы не пишете для POSIX ш, мы рекомендуем [[
или
if [ "$1" == "postfix" ] || [ "$1" == "all" ]; then
В моем ответе нет большой разницы, поэтому ⁺¹ от меня ;-) – Alfe
'[a == b] || [c == d] 'или' [a == b -o c == d] '. Или '[[...]]' вместо этого. – Kevin