我們上面的例子沒有指出file命令如何將錯誤返回給腳本。事實上,它根本就沒有返回錯誤。錯誤被忽略了。這不是因為我們粗心大意:許多Unix shell腳本(以及其他程序)忽略所調用程序所返回的錯誤 碼。這個做法是可取的,這是因為沒有標準的錯誤碼。
也許之所以錯誤碼被廣泛地忽略,是因為當用戶敲命令的時候這些錯誤碼很少被顯示出來。錯誤碼和錯誤檢查在Unix陣營中是如此少見,以至於有些程序甚至根本就不費勁去報告錯誤。
日期: The, 6 Oct 92 08:44:17 PDT 發信人: Bjorn Freeman-Benson主題: It's always good news in Unix land (Unix世界裡都是好消息) 收信人: UNIX-HATERS 看看這個tar程序。和所有的Unix"工具"(似乎不太準確)一樣,tar的工作方式非常奇怪和特別。例如,tar是一個極為樂觀向上的程序,它認為從不會有什麼壞事,所以太從來不返回錯誤狀態。事實上,哪怕是在屏幕上打出了錯誤信息,它返回的仍然是"好消息" (狀態0)。運行一下這個腳本: tar cf temp.tar no.such.file if ( $status == 0 ) echo "good news! No error." 你將得到如下結果: tar: no.such.file: No such file or directory Good news! No error. 我明白了——我從一開始就不應該奢望什麼一致,有用,幫助良好,快速,甚至是正確的結果... Bjorn
OK, 被shell折騰得很爽吧?還沒過足癮?不要緊,下回書我們換個地方,鑽進Unix下水道(pipe)裡體驗無窮的痛苦和快樂
沒有留言:
發佈留言