經常關注linux腳本的人,一定看到過 2>&1 這樣的用法,最初一定不明白其中的含義以及為什么是這樣的一種組合。昨天偶然間再次看到了這個 2>&1 的寫法,遂下決心搞明白其中的含義。
其實要弄清楚 2>&1 的含義,首先應當知道linux中有三種標準輸入輸出,分別是STDIN,STDOUT,STDERR,對應的數字是0,1,2。STDIN就是標準輸入,默認從鍵盤讀取信息;STDOUT是標準輸出,默認將輸出結果輸出至終端,也就是顯示器之類的東西;STDERR是標準的錯誤信息,默認也會顯示在終端上。由于STDOUT與STDERR都會默認顯示在終端上,為了區分二者的信息,就有了編號的0,1,2的定義,用1表示STDOUT,2表示STDERR。
$#: 命令行參數的個數
$0:script 本身的名字
$?: shell指令執行結果,若前一個指令執行正確,則該值為0,錯誤為非0。