我想要做這樣的事情:如何在Bash的圓括號中使用not(!)?
if [ (! true) -o true ]
then
echo "Success!"
else
echo "Fail!"
fi
但它拋出一個錯誤(-bash: syntax error near unexpected token '!'
)
是否有可能做這樣的事?
我想要做這樣的事情:如何在Bash的圓括號中使用not(!)?
if [ (! true) -o true ]
then
echo "Success!"
else
echo "Fail!"
fi
但它拋出一個錯誤(-bash: syntax error near unexpected token '!'
)
是否有可能做這樣的事?
你不能這樣做,但你可以這樣做:
if [ ! true ] || [ true ]
作爲一般規則,從來沒有嘗試使用-a
或-o
選項[
。
這裏的問題是[
是bash中的一個簡單的buildtin命令(另一種編寫test
的方法),它只能解釋它得到的任何參數,而(
是一個操作符。在執行命令之前解析操作符。
要使用(
和)
與[
,你必須說出來了:
if [ \(! true \) -o true ]
then
echo "Success!"
else
echo "Fail!"
fi
或
if [ '(' ! true ')' -o true ]
then
echo "Success!"
else
echo "Fail!"
fi
的[[ ... ]]
結構是一個特殊的語法結構,它沒有通常的語法限制命令,因爲它在另一個層面上工作。因此,在這裏你不需要引用括號,就像Ignacio說的那樣。 (此外,您必須使用&&
和||
而不是-a
和-o
這裏。)