我有兩個條件來驗證參數的腳本開始。其意圖是應該傳遞兩個參數,第一個參數必須是"FOO"
或"BAR"
。我有以下的作品,但我想知道如何使這個單一的if語句:結合具有選擇優先級的shell布爾條件
#!/bin/bash
if [ "$#" -ne 2 ]; then
echo "Usage: $0 <FOO or BAR> <Removed for SO>"
exit
fi
if [ "$1" != "FOO " -a "$1" != "BAR" ]; then
echo "Usage: $0 <FOO or BAR> <Removed for SO>"
exit
fi
只是爲了澄清,我所問的是如何在一般結合「的邏輯和」與「邏輯或」在shell腳本中。在僞代碼,這是我想要的東西:
if (numArgs != 2 || (someArg != "FOO" && someArg != "BAR"))
在右邊的條件中'-a'比'||'具有更高的優先級嗎? – asimes
優先是不需要的,因爲'||'之後的所有內容都在'[...]'中,這意味着'[...]'將被單獨評估。 – anubhava