Linux read命令的使用
1.命令簡介
read命令是Shell內(nèi)建命令,用于從標準輸入或-u選項指定的文件描述符中讀取單行,并將讀取的單行根據(jù)IFS變量分割成多個字段,并將分割后的字段分別賦值給指定的變量列表var_name。第一個字段分配給第一個變量var_name1,第二個字段分配給第二個變量var_name2,依次到結(jié)束。如果指定的變量名少于字段數(shù)量,則多出的字段連同分隔符分配給最后一個var_name,如果指定的變量命令多于字段數(shù)量,則多出的變量賦值為空。如果沒有指定任何var_name,則分割后的所有字段都存儲在特定變量REPLY中。當然,其不僅可以賦值變量,還可以賦值數(shù)組。
IFS(Internal Field Separator)變量是Shell內(nèi)建的環(huán)境變量,用于read命令將讀取的單行分隔為多個字段。默認取值為。
REPLY變量也是Shell內(nèi)建的環(huán)境變量,當read命令未指明接收變量時,用于接收read命令讀取的單行內(nèi)容。
2.命令格式
read [-ers] [-a aname] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...]
3.選項說明
-a [aname]:將分裂后的字段依次存儲到指定的數(shù)組中,存儲的起始位置從數(shù)組的下標0開始 -d [delim]:后跟一個標志符,只有第一個字符有用,用以取代換行符作為行的結(jié)束標志 -e:在輸入的時候可以使用命令補全功能,使用Tab鍵可自動不全當前目錄下文件 -i [text]:If readline is being used to read the line, text is placed into the editing buffer before editing begins -n [nchars]:后跟一個數(shù)字,定義輸入文本的長度,而不是讀取整行 -N [nchars]:后跟一個數(shù)字,定義輸入文本的長度,而不是讀取整行。但是如果一行不足nchars個字符,則忽略行分隔符繼續(xù)讀取下一行 -p [prompt]:從終端讀取輸入時,在輸入前打印提示信息 -r:屏蔽反斜杠\,如果沒有該選項,則\作為一個轉(zhuǎn)義字符,有的話\就是個正常的字符了 -s:安靜模式,在輸入字符時不再屏幕上顯示,例如login時輸入密碼 -t [timeout]:后面跟秒數(shù),定義輸入字符的等待時間 -u [fd]:后面跟文件描述符fd,從文件描述符中讀取
4.常用示例
(1)如果沒有指定變量,read會把傳入的值傳給REPLY,只要調(diào)用REPLY,只要調(diào)用REPLY,只要調(diào)用REPLY就可以引用。
[root@TENCENT64 ~]# read;echo "\$REPLY:$REPLY" dablelv $REPLY:dablelv
(2)read從終端讀取時指定一個提示語
[root@TENCENT64 ~]# read -p"input u password:";echo "\$REPLY:$REPLY" input u password:123456 $REPLY:123456
(3)-t參數(shù)指定 read 命令等待輸入的秒數(shù),當計時滿時,read命令返回一個非零退出狀態(tài)碼。
#!/bin/bash if read -t 5 -p "輸入網(wǎng)站名:" name then echo "你輸入的網(wǎng)站名是 $website" else echo "\n抱歉,你輸入超時了。" fi exit 0
執(zhí)行程序不輸入,等待5秒后:
輸入網(wǎng)站名:
抱歉,你輸入超時了
(4)除了控制輸入時間,還可以使用-n選項控制輸入的字符數(shù)量。當輸入的字符數(shù)目達到預(yù)定數(shù)目時,自動退出,并將輸入的數(shù)據(jù)賦值給變量。例如只接收2個輸入就退出:
#!/bin/bash read -n2 -p "請隨便輸入兩個字符: " any echo "\n您輸入的兩個字符是:$any" exit 0
(5)-s選項能夠使輸入的數(shù)據(jù)不顯示在命令終端上(實際上,輸入的內(nèi)容是顯示的,只是read命令將文本顏色設(shè)置成與背景相同的顏色)。輸入密碼常用這個選項。
#!/bin/bash read -s -p "請輸入您的密碼:" pass echo "\n您輸入的密碼是 $pass" exit 0
執(zhí)行程序輸入密碼后是不顯示的:
請輸入您的密碼:
您輸入的密碼是 runoob
(6)讀取文件
每次調(diào)用 read 命令都會讀取文件中的 “一行” 文本。當文件沒有可讀的行時,read 命令將以非零狀態(tài)退出。
while read var1 var2 do echo $var1 $var2 done < file.txt
以上就是Linux read命令的使用的詳細內(nèi)容,更多關(guān)于Linux read命令的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Linux系統(tǒng)中如何將普通用戶權(quán)限提升至root權(quán)限
首先,使用普通用戶登錄并通過命令su-切換到臨時Root狀態(tài),接著,設(shè)置root用戶密碼并使用命令su切換到root用戶,編輯/etc/sudoers文件,修改必要的權(quán)限設(shè)置,并保存退出,然后,修改/etc/passwd文件中的用戶ID從1000改為0,最后,重啟Linux系統(tǒng)2024-10-10
CentOS環(huán)境下安裝Redis3.0及phpredis擴展測試示例
這篇文章主要介紹了CentOS環(huán)境下安裝Redis3.0及phpredis擴展測試,結(jié)合實例形式分析了CentOS下Redis安裝相關(guān)步驟、命令及phpredis擴展的測試代碼,需要的朋友可以參考下2018-04-04
Linux中使用Cron定時執(zhí)行SQL任務(wù)的實現(xiàn)步驟
在Linux系統(tǒng)中,計劃任務(wù)(Cron)是一種強大的工具,可以自動執(zhí)行預(yù)定的任務(wù),它非常適合定期運行腳本、備份數(shù)據(jù)、清理臨時文件等一系列重復(fù)性任務(wù),本文給大家介紹了如何在Linux中使用Cron定時執(zhí)行SQL任務(wù),需要的朋友可以參考下2024-11-11
詳解Linux環(huán)境下NodeJS的安裝配置(HelloWorld)
本篇文章主要介紹了Linux環(huán)境下NodeJS的安裝配置,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-01-01
linux如何通過crontab命令定時執(zhí)行shell腳本
為保障網(wǎng)安測試活動的順利進行,需要設(shè)置Linux服務(wù)器上服務(wù)的定時啟停,本文介紹了通過crontab實現(xiàn)服務(wù)定時啟停的方法,包括檢查crontab安裝、編寫啟停腳本、創(chuàng)建定時任務(wù)、日志記錄,以及問題解決方案,通過crontab-e命令編輯定時任務(wù)2024-10-10

