我想重新像這樣多表達if語句中的Bash
if (arg1 || arg2 || arg 3) {}
,我沒有走到這一步,但我得到以下錯誤
line 11: [.: command not found
if [ $char == $';' -o $char == $'\\' -o $char == $'\'' ]
then ...
我嘗試不同的方法,但沒有似乎工作some of the ones I tried
我想重新像這樣多表達if語句中的Bash
if (arg1 || arg2 || arg 3) {}
,我沒有走到這一步,但我得到以下錯誤
line 11: [.: command not found
if [ $char == $';' -o $char == $'\\' -o $char == $'\'' ]
then ...
我嘗試不同的方法,但沒有似乎工作some of the ones I tried
對於bash,你可以使用[[ ]]
形式,而不是[ ]
,它允許&&
和||
內部:
if [[ foo || bar || baz ]] ; then
...
fi
否則,可以從外部使用通常的布爾邏輯運算符:特定
[ foo ] || [ bar ] || [ baz ]
...或使用運營商的命令test
(though modern versions of the POSIX specification describe this XSI extension as deprecated -- see the APPLICATION USAGE section):
[ foo -o bar -o baz ]
...這是以下不同的書面形式,也是類似的棄用:
test foo -o bar -o baz
我會發誓我之前試過這個沒有結果..可能做了一些不同的,謝謝! – david
Charles' answer是正確的,因爲它表明你如何做邏輯運算上的命令內(並且沒有,對於這個問題)的if
語句,但像你想在這裏使用case
它看起來更多:
case $char in
\;|\\|\') echo found;;
*) echo 'not found';;
esac
良好的電話 - 不出所料,我對字面問題的看法有點多,而不是意圖。 –
可能沒有必要使用'$'''。 –
儘管bash允許,但在[]中使用'=='實際上並不是有效的POSIX sh。字符串比較測試只使用一個'='。 –