国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Linux > 正文

shell腳本學習指南[三](Arnold Robbins & Nelson H.F. Beebe著)

2019-10-26 18:39:18
字體:
來源:轉載
供稿:網友

今天木有冷笑話,只有一個噩耗。噩耗是:今天木有冷笑話!!!
不要總想著冷笑話嘛,有點追求,聽毛主席的話:好好學習,天天向上!

第七章輸入輸出、文件與命令執行

學C的應該了解標準輸入輸出和錯誤輸出吧?感覺總打很多字進度太慢,所以一直在省略類似C的東西,也方便以后看這篇文章的人能夠快速學完shell腳本(或者是快速看完這本書)。

讀取行read命令是重要方式之一,它可以自標準輸入讀取行后,通過shell字段切割的功能(使用$IFS)進行切分,第一部分給第一個變量,第二部分給第二個,類推。如果切割單詞多余變量,則剩下所有的給最后一個變量。如果輸入行以反斜杠結尾,則read會丟棄反斜杠與換行符繼續讀取下行數據。它有一個選項 -r,它將忽視最后反斜杠當讀入數據。使用read可能的一個錯誤是通過循環讓read讀取一個文件如:
while IFS=: read user pass uid gid fullname homedir shell < /etx/passwd ... 這個循環將一直下去并且每次read只讀passwd的第一行。因為每次循環都重新打開了passwd文件讀取內容。解決辦法是: cat /etc/passwd | while IFS=: read ....... 這樣通過管道解決讀取文件問題。 這里有一個概念,文件描述符,一般這個文件描述符是由0-9這幾個數字來描述的,所以傳統上shell也就允許你最多打開十個文件。比如make 1> results 2> ERRS 。命令make的標準輸出(文件描述符1)傳給results,并將錯誤輸出(文件描述符2)傳給ERRS。設置完文件描述符后,如何引用呢?像這樣:make > results 2>&1 。
1> results這里的1其實沒必要,供輸出重定向的默認文件描述符是標準輸出,也就是文件描述符1,重定向 > results讓文件描述符1作為文件results,接下來重定向2>&1有兩部分,2>重定向文件描述2,也就是標準錯誤輸出。而&1就是剛才我們的疑問,用來引用我們定義的文件描述符。特別注意:2>&1這樣的四個字符一定要連著寫。

再介紹一個用來改變shell本身I/O設置的exec命令。如果只有I/O重定向而沒有任何參數時,exec會改變shell的文件描述符:

代碼如下:
exec 2> /tmp/$0.log #重定向shell本身的標準錯誤輸出
exec 3< /some/file #打開新文件描述符3
...
read name rank serno <&3 #從該文件讀取 exec 3>&- #關閉文件描述符3

上例展示了如何關閉文件描述符。
exec還有一個功能就是在當前shell下執行指定的程序。

書中對printf做了完整的介紹,這里就不再介紹了,就是C里邊的那些東西。

shell中有兩種與文件名相關的展開:第一個是波浪號展開(~ tilde expansion),另一個叫法較多如通配符展開式(wildcard expansion)、全局展開(globbing)或路徑展開(pathname expansion)。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 图木舒克市| 景宁| 桃江县| 西丰县| 托里县| 正定县| 武定县| 和田县| 龙岩市| 沛县| 昌都县| 桂林市| 栾川县| 志丹县| 惠州市| 城固县| 荔波县| 西贡区| 安龙县| 忻城县| 雅江县| 鹤庆县| 金沙县| 沙坪坝区| 和静县| 囊谦县| 夏邑县| 松原市| 梓潼县| 安化县| 衢州市| 西乡县| 东山县| 芷江| 盈江县| 冀州市| 江源县| 汉源县| 长泰县| 八宿县| 石狮市|