我正在嘗試編寫一個讀取三個整數的腳本,然後檢查這些數字中的任意兩個的總和是否大於第三個。如果這是真的,那麼它檢查這些數字是否相等,並打印一條消息。如果不是,它檢查是否有任何兩個數字相等並打印另一條消息。如果以上所有都是錯誤的,它會打印一條消息,說明所有數字都不相同。 我試圖把在以下嵌套條件:Bash:if語句中的算術,比較和常規運算符的多個條件
read X
read Y
read Z
if [ $X + $Y > $Z ] && [ $X + $Z > $Y ] && [ $Y + $Z > $X ]
then
if [ $X = $Y = $Z ]
then
echo "All numbers are equal."
elif [ [ $X = $Y ] && [ $X != $Z ] ] || [ [ $X = $Z ] && [ $X != $Y ] ] || [ [ $Z = $Y ] && [ $X != $Y ] ]
then
echo "Two of the numbers are equal."
else
echo "None of the numbers is equal to another."
fi
fi
我已經嘗試了所有類型的括號,括號組合(以上只是其中之一),但他們都不至今工作。 我在相關的帖子已經採取一看:
Bash if statement with multiple conditions throws an error
How to represent multiple conditions in a shell if statement?
,但我還沒有發現任何被覆蓋在他們的算術運算符的條件。 任何人都可以告訴我什麼是正確的方式?
(編輯:我忘記在原帖中提到我是bash的新手,所以請原諒我可能犯的任何深刻的錯誤,我仍然在試圖弄清楚事情是如何工作的。)
參見:'幫助test'。 '[']'是'test'內建的同義詞。 – Cyrus
你在第一個'if'中意識到你只需要檢查兩個數字是否大於另一個,你不需要檢查每個組合。 – 123
@ 123是的,你說得對,但我想在某個時候後,我更感興趣的是看看這樣的情況能否奏效以及如何實現。 – Ioannis