時間:2017.12.19
作者:李強
參考:man,info,magedu講義,萬能的internet
實驗環境:CentOS 6.9與CentOS7.4
聲明:以下英文純屬個人翻譯,英文B級,歡迎糾正,以下内容純屬個人了解,并沒有對錯,隻是參考,盜版不糾,才能有限,希望不誤人子弟為好。
讀取使用者輸入:
1、read
read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...]
read接收的和cat一樣是标準輸入。他會将接收來自stdin或者從fd中(如果-u選項使用的話)的單獨一行,然後每行劃分成像單詞一樣的段。你指定幾個變量劃分成幾個段,以空格為分隔符,目前看是如此。然後把空格分割的段指派個定義的變量。
這裡我們指定了2個name,然後就會把輸入的"1x 2y 3z"這一行,以空格劃分成2段,前面是1x,後面是"2y 3z"。然後前面複制給x,後面指派給y
。如果隻指定了x,那麼一整行都會賦給x,如果沒有指定name,存放在REPLAY變量中
選項:
-p prompt:prompt,提示資訊,其後跟name把使用者stdin存放到name中
-t timeout :timeout,使用者一定時間不輸入,就退出程式
-s :不列印來自終端的輸入,可用于密碼輸入,但是回車後并沒有換行。
-d delim:以某個定界符來終止變量内容的讀取。
-e :
-r :禁止反斜線做為轉義符使用,就是單純的反斜線字元。
-a array :
-n nchars:
-N nchars:
4)、read -u
while read -u3 i && read -u4 j;do
echo $i $j
done 3<afile 4<bfile
ead -u3 i 的意思是從 3 号 fd (file descriptor,檔案描述符) 中讀一行資料到 i 變量中, 同理你明白 read -u4 j 的意思
而 3<afile 的意思是重定向 afile 到 3 号 fd 中, 同理你明白 4<bfile
是以,整個代碼的意思是,不斷從 afile 和 bfile 中分别讀取内容到i , j 中,然後用echo 列印出來。
這個循環會一直執行直到遇到 afile 或 bfile 中至少任意一個的檔案尾。
比方說你 afile 的内容是
a
b
c
bfile 的内容是
1
2
3
4
則這段程式就會列印
a 1
b 2
c 3
本文轉自 lajifeiwomoshu 51CTO部落格,原文連結:http://blog.51cto.com/lajifeiwomoshu/2052163