Unix中 &0 &1 &2 $# 啥意思
經(jīng)常關(guān)注linux腳本的人,一定看到過(guò) 2>&1 這樣的用法,最初一定不明白其中的含義以及為什么是這樣的一種組合。昨天偶然間再次看到了這個(gè) 2>&1 的寫法,遂下決心搞明白其中的含義。
其實(shí)要弄清楚 2>&1 的含義,首先應(yīng)當(dāng)知道linux中有三種標(biāo)準(zhǔn)輸入輸出,分別是STDIN,STDOUT,STDERR,對(duì)應(yīng)的數(shù)字是0,1,2。STDIN就是標(biāo)準(zhǔn)輸入,默認(rèn)從鍵盤讀取信息;STDOUT是標(biāo)準(zhǔn)輸出,默認(rèn)將輸出結(jié)果輸出至終端,也就是顯示器之類的東西;STDERR是標(biāo)準(zhǔn)的錯(cuò)誤信息,默認(rèn)也會(huì)顯示在終端上。由于STDOUT與STDERR都會(huì)默認(rèn)顯示在終端上,為了區(qū)分二者的信息,就有了編號(hào)的0,1,2的定義,用1表示STDOUT,2表示STDERR。
$#: 命令行參數(shù)的個(gè)數(shù)
$0:script 本身的名字
$?: shell指令執(zhí)行結(jié)果,若前一個(gè)指令執(zhí)行正確,則該值為0,錯(cuò)誤為非0。
其實(shí)要弄清楚 2>&1 的含義,首先應(yīng)當(dāng)知道linux中有三種標(biāo)準(zhǔn)輸入輸出,分別是STDIN,STDOUT,STDERR,對(duì)應(yīng)的數(shù)字是0,1,2。STDIN就是標(biāo)準(zhǔn)輸入,默認(rèn)從鍵盤讀取信息;STDOUT是標(biāo)準(zhǔn)輸出,默認(rèn)將輸出結(jié)果輸出至終端,也就是顯示器之類的東西;STDERR是標(biāo)準(zhǔn)的錯(cuò)誤信息,默認(rèn)也會(huì)顯示在終端上。由于STDOUT與STDERR都會(huì)默認(rèn)顯示在終端上,為了區(qū)分二者的信息,就有了編號(hào)的0,1,2的定義,用1表示STDOUT,2表示STDERR。
$#: 命令行參數(shù)的個(gè)數(shù)
$0:script 本身的名字
$?: shell指令執(zhí)行結(jié)果,若前一個(gè)指令執(zhí)行正確,則該值為0,錯(cuò)誤為非0。
posted on 2015-02-12 13:51 javajohn 閱讀(182) 評(píng)論(0) 編輯 收藏