這篇文章主要介紹了Shell標(biāo)準(zhǔn)輸入、輸出和錯誤的示例分析,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
成都創(chuàng)新互聯(lián)是專業(yè)的梁平網(wǎng)站建設(shè)公司,梁平接單;提供成都網(wǎng)站制作、網(wǎng)站設(shè)計、外貿(mào)網(wǎng)站建設(shè),網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行梁平網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊,希望更多企業(yè)前來合作!文件描述符(fd):文件描述符是一個非負(fù)整數(shù),在打開現(xiàn)存文件或新建文件時,內(nèi)核會返回一個文件描述符,讀寫文件也需要使用文件描述符來訪問文件。
內(nèi)核為每個進(jìn)程維護(hù)該進(jìn)程打開的文件記錄表。文件描述符只適于Unix、Linux操作系統(tǒng)。
文件描述符 | 描述 | 映射關(guān)系 |
0 | 標(biāo)準(zhǔn)輸入,鍵盤 | /dev/stdin -> /proc/self/fd/0 |
1 | 標(biāo)準(zhǔn)輸出,屏幕 | /dev/stdout -> /proc/self/fd/1 |
2 | 標(biāo)準(zhǔn)錯誤,屏幕 | /dev/stderr -> /proc/self/fd/2 |
符號 | 描述 |
> | 符號左邊輸出作為右邊輸入(標(biāo)準(zhǔn)輸出) |
>> | 符號左邊輸出追加右邊輸入 |
< | 符號右邊輸出作為左邊輸入(標(biāo)準(zhǔn)輸入) |
<< | 符號右邊輸出追加左邊輸入 |
& | 重定向綁定符號 |
輸入和輸出可以被重定向符號解釋到shell。
shell命令是從左到右依次執(zhí)行命令。
下面n字母是文件描述符。
1)覆蓋輸出
一般格式:[n]>word
如果n沒有指定,默認(rèn)是1
示例:
打印結(jié)果寫到文件:echo "test" > a.txt
當(dāng)沒有安裝bc計算器時,錯誤輸出結(jié)果寫到文件:echo "1 + 1" |bc2 > error.log
2)追加重定向輸出
一般格式:[n]>>word
如果n沒有指定,默認(rèn)是1
示例:
打印結(jié)果追加到文件:echo "test" >> a.txt
當(dāng)沒有安裝bc計算器時,錯誤輸出結(jié)果追加文件:echo "1 + 1" |bc2 > error.log
一般格式:[n]<word
如果n沒有指定,默認(rèn)是0
示例:
a.txt內(nèi)容作為grep輸入:grep "test" --color < a.txt
1)覆蓋重定向標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯誤
兩種格式重定向標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯誤:
&>word和>&word 等價于 >word 2>&1
&將標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)輸入綁定到一起,重定向word文件。
示例:
當(dāng)不確定執(zhí)行對錯時都覆蓋到文件:echo "1 + 1" |bc &> error.log
當(dāng)不確定執(zhí)行對錯時都覆蓋到文件:echo "1 + 1" |bc > error.log 2>&1
2)追加標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯誤
追加格式:&>>word 等價于>>word2>&1
當(dāng)不確定執(zhí)行對錯時都追加文件:echo "1 + 1" |bc &>> error.log
將標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)標(biāo)準(zhǔn)輸入追加重定向到word:
<<[-]word
here-document
delimiter
從當(dāng)前shell讀取輸入源,直到遇到一行只包含delimiter終止,內(nèi)容作為標(biāo)準(zhǔn)輸入。
將eof標(biāo)準(zhǔn)輸入作為cat標(biāo)準(zhǔn)輸出再寫到a.txt:
# cat << eof 123 abc eof 123 abc # cat > a.txt << eof > 123 > abc > eof
/dev/null是一個空設(shè)備,向它寫入的數(shù)組都會丟棄,但返回狀態(tài)是成功的。與其對應(yīng)的還有一個/dev/zero設(shè)備,提供無限的0數(shù)據(jù)流。
在寫Shell腳本時我們經(jīng)常會用到/dev/null設(shè)備,將stdout、stderr輸出給它,也就是我們不想要這些輸出的數(shù)據(jù)。
通過重定向到/dev/null忽略輸出,比如我們沒有安裝bc計算器,正常會拋出沒有發(fā)現(xiàn)命令:
# echo "1 + 1" |bc >/dev/null 2>&1
這就讓標(biāo)準(zhǔn)和錯誤輸出到了空設(shè)備。
忽略標(biāo)準(zhǔn)輸出:
# echo "test" >/dev/null
忽略錯誤輸出:
# echo "1 + 1" |bc 2>/dev/null
博客地址:http://lizhenliang.blog.51cto.com
QQ群:323779636(Shell/Python運維開發(fā)群)
read命令從標(biāo)準(zhǔn)輸入讀取,并把輸入的內(nèi)容復(fù)制給變量。
命令格式: read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars][-p prompt] [-t timeout] [-u fd] [name ...]
-e | 在一個交互shell中使用readline獲取行 |
-r | 不允許反斜杠轉(zhuǎn)義任何字符 |
-s | 隱藏輸入 |
-a array | 保存為數(shù)組,元素以空格分隔 |
-d delimiter | 持續(xù)讀取直到遇到delimiter第一個字符退出 |
-i text | 將test文本作為 |
-n nchars | 讀取nchars個字符返回,而不是等到換行符 |
-N nchars | 讀取nchars個字符返回,除非遇到文件結(jié)束符或超時,其他分隔符都被忽略 |
-p prompt | 提示信息 |
-t timeout | 等待超時時間,秒 |
-u fd | 指定文件描述符號碼作為輸入,默認(rèn)是0 |
name | 變量名 |
示例:
獲取用戶輸入保存到變量: # read -p "Please input your name:" VAR Please input your name: lizhenliang # echo $VAR lizhenliang 用戶輸入保存為數(shù)組: # read -p "Please input your name:" -a ARRAY Please input your name: a b c # echo ${ARRAY[*]} a b c 遇到e字符返回: # read -d e VAR 123 456 e # echo $VAR 123 456 從文件作為read標(biāo)準(zhǔn)輸入: # cat a.txt adfasfd # read VAR < a.txt # echo $VAR adfasfd while循環(huán)讀取每一行作為read的標(biāo)準(zhǔn)輸入: # cat a.txt |while read LINE; do echo$LINE; done 123 abc 分別變量賦值: # read a b c 1 2 3 # echo $a 1 # echo $b 2 # echo $c 3 # echo 1 2 3 | while read a b c;do echo"$a $b $c"; done 1 2 3
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“Shell標(biāo)準(zhǔn)輸入、輸出和錯誤的示例分析”這篇文章對大家有幫助,同時也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
文章題目:Shell標(biāo)準(zhǔn)輸入、輸出和錯誤的示例分析-創(chuàng)新互聯(lián)
當(dāng)前URL:http://muchs.cn/article44/doojee.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航、網(wǎng)站策劃、全網(wǎng)營銷推廣、小程序開發(fā)、網(wǎng)頁設(shè)計公司、軟件開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容