中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Shell標準輸入、輸出和錯誤的示例分析

發布時間:2021-12-04 15:41:15 來源:億速云 閱讀:130 作者:小新 欄目:開發技術

這篇文章主要介紹了Shell標準輸入、輸出和錯誤的示例分析,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

文件描述符(fd):文件描述符是一個非負整數,在打開現存文件或新建文件時,內核會返回一個文件描述符,讀寫文件也需要使用文件描述符來訪問文件。

內核為每個進程維護該進程打開的文件記錄表。文件描述符只適于Unix、Linux操作系統。

8.1 標準輸入、輸出和錯誤

文件描述符

描述

映射關系

0

標準輸入,鍵盤

/dev/stdin ->  /proc/self/fd/0

1

標準輸出,屏幕

/dev/stdout ->  /proc/self/fd/1

2

標準錯誤,屏幕

/dev/stderr ->  /proc/self/fd/2

8.2 重定向符號

符號

描述

符號左邊輸出作為右邊輸入(標準輸出)

>> 

符號左邊輸出追加右邊輸入

符號右邊輸出作為左邊輸入(標準輸入)

<< 

符號右邊輸出追加左邊輸入

&

重定向綁定符號

輸入和輸出可以被重定向符號解釋到shell。

shell命令是從左到右依次執行命令。

下面n字母是文件描述符。

8.3 重定向輸出

1)覆蓋輸出

一般格式:[n]>word

如果n沒有指定,默認是1

示例:

打印結果寫到文件:echo "test" > a.txt

當沒有安裝bc計算器時,錯誤輸出結果寫到文件:echo "1 + 1" |bc2 > error.log

2)追加重定向輸出

一般格式:[n]>>word

如果n沒有指定,默認是1

示例:

打印結果追加到文件:echo "test" >> a.txt

當沒有安裝bc計算器時,錯誤輸出結果追加文件:echo "1 + 1" |bc2 > error.log

8.4 重定向輸入

一般格式:[n]<word

如果n沒有指定,默認是0

示例:

a.txt內容作為grep輸入:grep "test" --color < a.txt   

8.5 重定向標準輸出和標準錯誤

1)覆蓋重定向標準輸出和標準錯誤

兩種格式重定向標準輸出和標準錯誤:

&>word和>&word 等價于 >word 2>&1  

&將標準輸出和標準輸入綁定到一起,重定向word文件。

示例:

當不確定執行對錯時都覆蓋到文件:echo "1 + 1" |bc &> error.log

當不確定執行對錯時都覆蓋到文件:echo "1 + 1" |bc > error.log 2>&1

2)追加標準輸出和標準錯誤

追加格式:&>>word  等價于>>word2>&1

當不確定執行對錯時都追加文件:echo "1 + 1" |bc &>> error.log

將標準輸出和標準標準輸入追加重定向到word:

<<[-]word

  here-document

delimiter

從當前shell讀取輸入源,直到遇到一行只包含delimiter終止,內容作為標準輸入。

將eof標準輸入作為cat標準輸出再寫到a.txt:

# cat << eof
123
abc
eof
 
123
abc
# cat > a.txt << eof
> 123
> abc
> eof

8.6 重定向到空設備 

/dev/null是一個空設備,向它寫入的數組都會丟棄,但返回狀態是成功的。與其對應的還有一個/dev/zero設備,提供無限的0數據流。

在寫Shell腳本時我們經常會用到/dev/null設備,將stdout、stderr輸出給它,也就是我們不想要這些輸出的數據。

通過重定向到/dev/null忽略輸出,比如我們沒有安裝bc計算器,正常會拋出沒有發現命令:

# echo "1 + 1" |bc >/dev/null 2>&1

這就讓標準和錯誤輸出到了空設備。

忽略標準輸出:

# echo "test" >/dev/null

忽略錯誤輸出:

# echo "1 + 1" |bc 2>/dev/null

博客地址:http://lizhenliang.blog.51cto.com

QQ群:323779636(Shell/Python運維開發群)

8.7 read命令

read命令從標準輸入讀取,并把輸入的內容復制給變量。

命令格式: read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars][-p prompt] [-t timeout] [-u fd] [name ...]

-e

在一個交互shell中使用readline獲取行

-r

不允許反斜杠轉義任何字符

-s

隱藏輸入

-a array

保存為數組,元素以空格分隔

-d delimiter

持續讀取直到遇到delimiter第一個字符退出

-i text

將test文本作為

-n nchars

讀取nchars個字符返回,而不是等到換行符

-N nchars

讀取nchars個字符返回,除非遇到文件結束符或超時,其他分隔符都被忽略

-p prompt

提示信息

-t timeout

等待超時時間,秒

-u fd

指定文件描述符號碼作為輸入,默認是0

name

變量名

示例:

獲取用戶輸入保存到變量:
# read -p "Please input your name:" VAR
Please input your name: lizhenliang
# echo $VAR
lizhenliang
用戶輸入保存為數組:
# 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標準輸入:
# cat a.txt
adfasfd
# read VAR < a.txt
# echo $VAR
adfasfd
while循環讀取每一行作為read的標準輸入:
# 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

感謝你能夠認真閱讀完這篇文章,希望小編分享的“Shell標準輸入、輸出和錯誤的示例分析”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

钦州市| 三原县| 万年县| 长海县| 镇雄县| 探索| 定边县| 堆龙德庆县| 区。| 揭西县| 山阴县| 泊头市| 新津县| 隆尧县| 克拉玛依市| 兴业县| 荃湾区| 大港区| 荣昌县| 石林| 闸北区| 武宣县| 昂仁县| 安西县| 大庆市| 星子县| 友谊县| 积石山| 新巴尔虎左旗| 海原县| 镇雄县| 冕宁县| 梓潼县| 平昌县| 青冈县| 玉龙| 东方市| 乐昌市| 融水| 白玉县| 方山县|