2011-05-28 56 views

回答

3

你不能這樣做,但你可以這樣做:

if [ ! true ] || [ true ] 

作爲一般規則,從來沒有嘗試使用-a-o選項[

5

這裏的問題是[是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這裏。)

相關問題