
我嘗試過以下程式碼..
if diff f1.sh f2.sh; then
echo Same
else
echo Different
fi
在這裡..就我而言f1.sh和f2.sh是不同的檔案..所以 if 語句列印不同的(正如預期的那樣)但是情況如何變成錯誤的並控制更改為 else 語句...它是如何發生的..條件如何變為假..?這個 diff 命令在這裡的行為方式.. 請深入解釋該過程.. 提前致謝(抱歉,如果我的英語太差了..)
答案1
這是設計使然。如果你查看diff
手冊頁,你會看到這樣的聲明:
若輸入相同則退出狀態為 0,若不同則為 1,若有問題則為 2。
退出狀態0
表示true
shell,因此顯示「相同」。在其他兩種可能的狀態中,「不同」顯示為任何非零值false
。
shell 手冊頁中描述了該if
行為,例如bash
:
if list; then list; [ elif list; then list; ] ... [ else list; ] fi
if 清單被執行。如果其退出狀態為零,則列表為 被執行。否則依序執行每個elif列表,如果其退出 status 為零,則執行對應的 then 清單並執行指令 完成。否則,將執行 else 清單(如果存在)。退出狀態 是最後執行的指令的退出狀態,如果沒有條件則為零 經測試屬實。