Linux read命令詳解
阿新 • • 發佈:2019-01-20
mysql finish 下一個 就會 輸出 light 文件描述 The pre
Linux read命令
Linux read命令用於從標準輸入讀取數值。
read 內部命令被用來從標準輸入讀取單行數據。這個命令可以用來讀取鍵盤輸入,當使用重定向的時候,可以讀取文件中的一行數據。
用法:
read [-ers] [-a array] [-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新開啟的。
實例:
1、簡單讀取
#!/bin/bash #這裏默認會換行 echo "輸入網站名: " #讀取從鍵盤的輸入 read website echo "你輸入的網站名是 $website" exit 0 #退出
運行結果
[root@mysql linux]# sh test.sh 輸入網站名: www.baidu.com 你輸入的網站名是 www.baidu.com
2、-p 參數,允許在 read 命令行中直接指定一個提示
#!/bin/bash read -p "輸入網站名:" website echo "你輸入的網站名是 $website" exit0
運行結果
[root@mysql linux]# sh test.sh 輸入網站名:www.baidu.com 你輸入的網站名是 www.baidu.com
3、-t 參數指定 read 命令等待輸入的秒數,當計時滿時,read命令返回一個非零退出狀態
#!/bin/bash if read -t 5 -p "輸入網站名:" name then echo "你輸入的網站名是 $website" else echo "\n抱歉,你輸入超時了。" fi exit 0
運行程序,不輸入
[root@mysql linux]# sh test.sh 輸入網站名:\n抱歉,你輸入超時了。
4、除了輸入時間計時,還可以使用 -n 參數設置 read 命令計數輸入的字符。當輸入的字符數目達到預定數目時,自動退出,並將輸入的數據賦值給變量
#!/bin/bash read -n1 -p "Do you want to continue [Y/N]?" answer case $answer in Y | y) echo "fine ,continue";; N | n) echo "ok,good bye";; *) echo "error choice";; esac exit 0
該例子使用了-n 選項,後接數值 1,指示 read 命令只要接受到一個字符就退出。只要按下一個字符進行回答,read 命令立即接受輸入並將其傳給變量,無需按回車鍵
5、-s 選項能夠使 read 命令中輸入的數據不顯示在命令終端上(實際上,數據是顯示的,只是 read 命令將文本顏色設置成與背景相同的顏色)。輸入密碼常用這個選項
#!/bin/bash read -s -p "請輸入您的密碼:" pass echo "\n您輸入的密碼是 $pass" exit 0
執行結果
[root@mysql linux]# sh test.sh 請輸入您的密碼:\n您輸入的密碼是 wang
6、讀取文件
每次調用 read 命令都會讀取文件中的 "一行" 文本。當文件沒有可讀的行時,read 命令將以非零狀態退出。
通過什麽樣的方法將文件中的數據傳給 read 呢?使用 cat 命令並通過管道將結果直接傳送給包含 read 命令的 while 命令。
測試文件 test.txt 內容如下:
123 456 runoob
測試代碼
#!/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
執行結果
Line 1:123 Line 2:456 Line 3:runoob finish
7、使用 -e 參數,以下實例輸入字符 a 後按下 Tab 鍵就會輸出相關的文件名(該目錄存在的)
$ read -e -p "輸入文件名:" str 輸入文件名:a a.out a.py a.pyc abc.txt 輸入文件名:a
Linux read命令詳解