在linux中,read命令用于讀取鍵盤輸入,可以從標準輸入中讀取一行數據,并把輸入行的每個字段的值指定給shell變量,當使用重定向的時候,可以讀取文件中的一行數據,語法“read [參數] [name …]”。
本教程操作環境:linux7.3系統、Dell G3電腦。
Linux read命令介紹
Linux?中的 read 命令從標準輸入中讀取一行,并把輸入行的每個字段的值指定給 shell 變量。
語法
read?[-ers]?[-a?aname]?[-d?delim]?[-i?text]?[-n?nchars]?[-N?nchars]?[-p?prompt]?[-t?timeout]?[-u?fd]?[name?...]
參數
參數 | 描述 |
---|---|
-a | 后跟一個變量,該變量會被認為是個數組,然后給其賦值,默認是以空格為分割符。 |
-d | 后面跟一個標志符,其實只有其后的第一個字符有用,作為結束的標志。 |
-p | 后面跟提示信息,即在輸入前打印提示信息。 |
-e | 在輸入的時候可以使用命令補全功能。 |
-n | 后跟一個數字,定義輸入文本的長度,很實用。 |
-r | 屏蔽,如果沒有該選項,則作為一個轉義字符,有的話 就是個正常的字符了。 |
-s | 安靜模式,在輸入字符時不再屏幕上顯示,例如 login 時輸入密碼。 |
-t | 后面跟秒數,定義輸入字符的等待時間。 |
-u | 后面跟 fd,從文件描述符中讀入,該文件描述符可以是 exec 新開啟的。 |
說明
read 內部命令被用來從標準輸入讀取單行數據。這個命令可以用來讀取鍵盤輸入,當使用重定向的時候,可以讀取文件中的一行數據。
read命令使用示例
1、簡單讀取
#!/bin/bash echo?"請您輸入網站名:?"?? #讀取從鍵盤的輸入?? read?website?? echo?"你輸入的網站名是?$website"?? exit?0??#退出
2、讀取文件
每次調用 read 命令都會讀取文件中的 “一行” 文本。當文件沒有可讀的行時,read 命令將以非零狀態退出。
我們可以使用 cat 命令將結果直接傳送給包含 read 命令的 while 命令。
測試文件 test.txt 內容如下:
?AAAAAAAAAAAAAAAAAAAAAA
BBBBBBBBBBBBBBBBBBBBBB
CCCCCCCCCCCCCCCCCCCCCC
DDDDDDDDDDDDDDDDDDDDDD
================傳智播客
腳本如下,可以將腳本放到xxx.sh中進行執行
#!/bin/bash count=1 cat?test.txt?|?while?read?line?????? #?cat?命令的輸出作為read命令的輸入,read讀到>的值放在line中 do ???echo?"Line?$count:$line" ???count=$[?$count?+?1?]??????????#?注意中括號中的空格。 done echo?"finish" exit?0
3、示例:?
read?1987name 從標準輸入讀取輸入并賦值給變量1987name。 ? read?first?last 從標準輸入讀取輸入到第一個空格或者回車,將輸入的第一個單詞放到變量first中,并將該行其他的輸入放在變量last中。 ? read 從標準輸入讀取一行并賦值給特定變量REPLY。 ? read?-a?arrayname 把單詞清單讀入arrayname的數組里。 ? read?-p?"text" 打印提示(text),等待輸入,并將輸入存儲在REPLY中。 ? read?-r?line 允許輸入包含反斜杠。 ? read?-t?3 指定讀取等待時間為3秒。 ? read?-n?2?var 從輸入中讀取兩個字符并存入變量var,不需要按回車讀取。 ? read?-d?":"?var 用定界符“:”結束輸入行。
補充一個終端輸入密碼時候,不讓密碼顯示出來的例子。
方法1: ? #!/bin/bash read?-p?"輸入密碼:"?-s?pwd echo echo?password?read,?is?"$pwd" ? 方法2: ? #!/bin/bash stty?-echo read?-p?"輸入密碼:"?pwd stty?echo echo echo?輸入完畢。
其中,選項-echo禁止將輸出發送到終端,而選項echo則允許發送輸出。?
?注意:使用echo命令輸出變量值時,必須在變量名前添加符號$。否則,echo將直接輸出變量名。
相關推薦:《Linux視頻教程》