1. 程式人生 > >Shell中read的選項及用法

Shell中read的選項及用法

  1. Read的一些選項

Read可以帶有-a, -d, -e, -n, -p, -r, -t, 和 -s八個選項。

-a :將內容讀入到數值中

echo -n “Input muliple values into an array:” read -a array echo “get ${#array[@]} values in array”

-d :表示delimiter,即定界符,一般情況下是以IFS為引數的間隔,但是通過-d,我們可以定義一直讀到出現執行的字元位置。例如read –d madfds value,讀到有m的字元的時候就不在繼續向後讀,例如輸入為 hello m,有效值為“hello”,請注意m前面的空格等會被刪除。這種方式可以輸入多個字串,例如定義“.”作為結符號等等。

-e :只用於互相互動的指令碼,它將readline用於收集輸入行。讀到這幾句話不太明白什麼意思,先跳過。

-n :用於限定最多可以有多少字元可以作為有效讀入。例如echo –n 4 value1 value2,如果我們試圖輸入12 34,則只有前面有效的12 3,作為輸入,實際上在你輸入第4個字元‘3’後,就自動結束輸入。這裡結果是value為12,value2為3。

-p :用於給出提示符,在前面的例子中我們使用了echo –n “…“來給出提示符,可以使用read –p ‘… my promt?’value的方式只需一個語句來表示。

-r :在引數輸入中,我們可以使用’/’表示沒有輸入完,換行繼續輸入,如果我們需要行最後的’/’作為有效的字元,可以通過-r來進行。此外在輸入字元中,我們希望/n這類特殊字元生效,也應採用-r選項。

-s :對於一些特殊的符號,例如箭頭號,不將他們在terminal上列印,例如read –s key,我們按游標,在回車之後,如果我們要求顯示,即echo,游標向上,如果不使用-s,在輸入的時候,輸入處顯示^[[A,即在terminal上 列印,之後如果要求echo,游標會上移。

-t :用於表示等待輸入的時間,單位為秒,等待時間超過,將繼續執行後面的指令碼,注意不作為null輸入,引數將保留原有的值

  1. Read的相關例項

a. 拼接檔案

#將afile檔案中的前三行與bfile中的前四行拼接在一起 while read -u3 i && read -u4 j;do echo $i $j done 3<afile 4<bfile

b. 輸入不在終端顯示

read -p “Input passwd:” -s Passwd echo $Passwd

c. 限時輸入,否則退出

#延遲五秒,沒有輸入將自動退出 read -p “Input a number:” -t 5 Number

d. 讀取限定字元

#從輸入中取5個字元 read -p “Input a word:” -n 5 Word

e. 等待輸出q退出

#輸入,直到輸入q,將自動退出 read -dp -p “Input some words end with q:” word