《LINUX入門:shell腳本示例:read命令》要點:
本文介紹了LINUX入門:shell腳本示例:read命令,希望對您有用。如果有疑問,可以聯(lián)系我們。
要與Linux交互,腳本獲取鍵盤輸入的結(jié)果是必弗成少的,read可以讀取鍵盤輸入的字符.
read [-rs] [-a ARRAY] [-d delim] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [var_name1 var_name2 ...]
read命令用于從尺度輸入中讀取輸入單行,并將讀取的單行根據(jù)IFS變量分裂成多個字段,并將分割后的字段分別賦值給指定的變量列表var_name.第一個字段分配給第一個變量var_name1,第二個字段分配給第二個變量var_name2,依次到結(jié)束.如果指定的變量名少于字段數(shù)量,則多出的字段數(shù)量也同樣分配給最后一個var_name,如果指定的變量命令多于字段數(shù)量,則多出的變量賦值為空.
如果沒有指定任何var_name,則朋分后的所有字段都存儲在特定變量REPLY中.
選項說明: -a:將分裂后的字段依次存儲到指定的數(shù)組中,存儲的起始位置從數(shù)組的index=0開始. -d:指定讀取行的結(jié)束符號.默認結(jié)束符號為換行符. -n:限制讀取N個字符就自動結(jié)束讀取,如果沒有讀滿N個字符就按下回車或遇到換行符,則也會結(jié)束讀取. -N:嚴格要求讀滿N個字符才自動結(jié)束讀取,即使中途按下了回車或遇到了換行符也不結(jié)束.其中換行符或回車算一個字符. -p:給出提示符.例如,"-p 請輸入暗碼:" -r:禁止反斜線的轉(zhuǎn)義功能.這意味著"\"會變成文本的一部分. -s:靜默模式.輸入的內(nèi)容不會回顯在屏幕上. -t:給出超時時間,在達到超時時間時,read退出并返回錯誤.也就是說不會讀取任何內(nèi)容,即使已經(jīng)輸入了一部分.
使用示例:
(1).將讀取的內(nèi)容分派給數(shù)組變量,從索引號0開始分派.
[root@linuxidc ~]# read -a array_test what is you name? [root@linuxidc ~]# echo ${array_test[@]} what is you name? [root@linuxidc ~]# echo ${array_test[0]} what
(2).指定讀取行的停止符號,而不再使用換行符.
[root@linuxidc ~]# read -d '/' what is you name \// # 輸入完尾部的"/",自動停止read
由于沒有指定var_name,所以通過$REPLY變量查看read讀取的行.
[root@linuxidc ~]# echo $REPLY what is you name /
(3).限定輸入字符.
例如,輸入了5個字符后就停止.
[root@linuxidc tmp]# read -n 5 12345 [root@linuxidc tmp]# echo $REPLY # 輸入12345共5個字符 12345
如果輸入的字符數(shù)小于5,按下回車會立即停止讀取.
[root@linuxidc ~]# read -n 5 123 [root@linuxidc ~]# echo $REPLY 123
但如果使用的是"-N 5"而不是"-n 5",則嚴格限制讀滿5個字符才停止讀取.
[root@linuxidc ~]# read -N 5 123\n4 [root@linuxidc ~]# read -N 5 123 # 3后的回車(換行)算是一個字符 4
(4).使用-p選項給出輸入提醒.
[root@linuxidc ~]# read -p "pls enter you name: " pls enter you name: Junmajinlong [root@linuxidc ~]# echo $REPLY Junmajinlong
(5).禁止反斜線轉(zhuǎn)義功效.
[root@linuxidc ~]# read -r what is you name \? [root@linuxidc ~]# echo $REPLY what is you name \?
(6).不回顯輸入的字符.比如輸入暗碼的時候,不回顯輸入暗碼.
[root@linuxidc ~]# read -s -p "please enter your password: " please enter your password: [root@linuxidc ~]# echo $REPLY 123456
(7).將讀取的行朋分后賦值給變量.
[root@linuxidc ~]# read var1 var2 var3 abc def galsl djks [root@linuxidc ~]# echo $var1:::$var2:::$var3 abc:::def:::galsl djks
(8).給出輸入時間限制.沒完成的輸入將被丟棄,所以變量將賦值為空(如果在執(zhí)行read前,變量已被賦值,則此變量在read超時后將被籠罩為空).
[root@linuxidc ~]# var=5 [root@linuxidc ~]# read -t 3 var 1 [root@linuxidc ~]# echo $var
本文永遠更新鏈接地址:
歡迎參與《LINUX入門:shell腳本示例:read命令》討論,分享您的想法,維易PHP學(xué)院為您提供專業(yè)教程。
轉(zhuǎn)載請注明本頁網(wǎng)址:
http://www.fzlkiss.com/jiaocheng/8865.html