回答
對數值比較,你可以這樣做:
if ! (((a == b) && (a == c)))
對於字符串比較:
if ! [[ "$a" == "$b" && "$a" == "$c" ]]
在bash,在雙括弧建立一個算術上下文(其中美元符號大多數情況下是可選的),用於比較(也用於for ((i=0; i<=10; i++))
和$(())
算術擴展),並且用於區分序列和一組創建的單個圓括號一個子shell。
這一點,例如,執行命令true
和,因爲它總是如此它的作用:
if (true); then echo hi; fi
這是一樣的
if true; then echo hi; fi
只是一個子shell被創建。但是,if ((true))
會測試名爲「true」的變量的值。
如果您要包含美元符號,那麼「$ true」將毫無疑問地成爲一個變量,但單個圓括號(或沒有括號)的行爲會發生變化。
if ($true)
或
if $true
將執行變量的內容爲命令,並執行基於該命令的退出值條件的動作(或送「未找到命令」消息,如果內容AREN是一個有效的命令)。
if (($true))
和上述的if ((true))
一樣。
#!/bin/bash
a=2
b=3
c=4
if ! (((a == b) && (a == c))); then
# stuff here
fi
你也可以使用,我個人覺得更清晰的情況如下:
#!/bin/bash
a=2
b=3
c=4
if (((a != b) || (a != c))); then
# stuff here
fi
從技術上講不需要周圍的子表達式的括號,因爲平等運營商== !=
有較高優先,那麼兩個複合比較運算符&& ||
,但我認爲明智的做法是讓他們在那裏顯示意圖,如果沒有別的。
if [ "$a" != "$b" -o "$a" != "$c" ]; then
# ...
else
# ...
fi
或者,直接翻譯:`if [! \\(\\(「$ a」=「$ b」\\)-a \\(「$ a」=「$ c」\\)\\)]`... – 2011-01-27 03:09:56
顛倒運算符的邏輯像這是[De Morgan's law](http://en.wikipedia.org/wiki/De_Morgan's_laws)。 – chrisaycock 2011-01-27 03:20:34
- 1. Bash/Shell腳本
- 2. shell腳本BASH
- 3. Bash shell腳本
- 4. 條件shell腳本
- 5. 在Linux shell bash腳本中複製文件時出錯
- 6. 陣列在bash shell腳本
- 7. Shell腳本:使用bash與xargs
- 8. 在linux中使用bash腳本合併兩個文本文件
- 9. shell腳本,如果條件
- 10. 在bash腳本中調用一個shell腳本
- 11. Bash腳本Awk條件
- 12. 條件語句bash腳本
- 13. 帶條件的Bash腳本
- 14. date命令在bash shell腳本中
- 15. 在Bash Shell腳本中追加數據
- 16. 在Bash Shell腳本中創建.csv
- 17. 在java中運行bash shell腳本
- 18. bash:〜在shell腳本中的擴展
- 19. 使用shell腳本
- 20. 在shell腳本中使用$ -
- 21. shell腳本複製文件
- 22. 如何使用Shell腳本交換符合條件的文件中的行
- 23. 使用shell腳本
- 24. 當在shell腳本中使用雙引號,如果條件
- 25. 最大用戶ID在Linux中使用bash shell腳本
- 26. 帶有條件迴響的Shell腳本
- 27. 如何在bash腳本中忽略條件使用cat命令?
- 28. 在bash腳本中使用mySQL檢查兩個條件
- 29. BASH中的基本Shell腳本
- 30. 調用shell腳本/。從一個bash腳本內的jar文件
感謝SiegeX在這裏的很好的解釋! – 2011-01-27 03:20:05