欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品

主頁 > 知識庫 > SHELL腳本read命令的具體用法

SHELL腳本read命令的具體用法

熱門標簽:電話機器人對家居行業幫助大嗎 合肥電銷外呼系統供應商 黑暗之魂3地圖標注 如何申請400的電話呀 AI智能電銷機器人壞處 地圖標注審核周期 蘭州電銷機器人加盟 沈陽ai電銷智能機器人 電商外呼系統排名

1.1 shell read簡介

要與Linux交互,腳本獲取鍵盤輸入的結果是必不可少的,read可以讀取鍵盤輸入的字符。

shell作為一門語言,自然也具有讀數據的功能,read就是按行從文件(或標準輸入或給定文件描述符)中讀取數據的最佳選擇。當使用管道、重定向方式組合命令時感覺達不到自己的需求時,不妨考慮下while read line。

read [-rs] [-a ARRAY] [-d delim] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [var_name1 var_name2 ...]

read命令用于從標準輸入中讀取輸入單行,并將讀取的單行根據IFS變量分裂成多個字段,并將分割后的字段分別賦值給指定的變量列表var_name。第一個字段分配給第一個變量var_name1,第二個字段分配給第二個變量var_name2,依次到結束。如果指定的變量名少于字段數量,則多出的字段數量也同樣分配給最后一個var_name,如果指定的變量命令多于字段數量,則多出的變量賦值為空。

如果沒有指定任何var_name,則分割后的所有字段都存儲在特定變量REPLY中。

選項說明:
-a:將分裂后的字段依次存儲到指定的數組中,存儲的起始位置從數組的index=0開始。
-d:指定讀取行的結束符號。默認結束符號為換行符。
-n:限制讀取N個字符就自動結束讀取,如果沒有讀滿N個字符就按下回車或遇到換行符,則也會結束讀取。
-N:嚴格要求讀滿N個字符才自動結束讀取,即使中途按下了回車或遇到了換行符也不結束。其中換行符或回車算一個字符。
-p:給出提示符。默認不支持"\n"換行,要換行需要特殊處理,見下文示例。例如,"-p 請輸入密碼:"
-r:禁止反斜線的轉義功能。這意味著"\"會變成文本的一部分。
-s:靜默模式。輸入的內容不會回顯在屏幕上。
-t:給出超時時間,在達到超時時間時,read退出并返回錯誤。也就是說不會讀取任何內容,即使已經輸入了一部分。
-u:從給定文件描述符(fd=N)中讀取數據。

1.2 基本用法示例

(1).將讀取的內容分配給數組變量,從索引號0開始分配。

[root@xuexi ~]# read -a array_test
what is you name?  

[root@xuexi ~]# echo ${array_test[@]}
what is you name?

[root@xuexi ~]# echo ${array_test[0]}
what

(2).指定讀取行的結束符號,而不再使用換行符。

[root@xuexi ~]# read -d '/'
what is you name \//    # 輸入完尾部的"/",自動結束read

由于沒有指定var_name,所以通過$REPLY變量查看read讀取的行。

[root@xuexi ~]# echo $REPLY
what is you name /

(3).限制輸入字符。

例如,輸入了5個字符后就結束。

[root@xuexi tmp]# read -n 5
12345

[root@xuexi tmp]# echo $REPLY  # 輸入12345共5個字符
12345

如果輸入的字符數小于5,按下回車會立即結束讀取。

[root@xuexi ~]# read -n 5
123

[root@xuexi ~]# echo $REPLY
123

但如果使用的是"-N 5"而不是"-n 5",則嚴格限制讀滿5個字符才結束讀取。

[root@xuexi ~]# read -N 5
123\n4

[root@xuexi ~]# read -N 5
123     # 3后的回車(換行)算是一個字符
4

(4).使用-p選項給出輸入提示。

[root@xuexi ~]# read -p "pls enter you name: "
pls enter you name: Junmajinlong

[root@xuexi ~]# echo $REPLY
Junmajinlong

"-p"選項默認不帶換行功能,且也不支持"\n"換行。但通過$'string'的方式特殊處理,就可以實現換行的功能。例如:

[root@node2 ~]# read -p $'Enter your name: \n'
Enter your name: 
JunMaJinLong

關于$'String'和$"String"的作用

有些時候在某些服務管理腳本中看到$"$string"或$"string",經過一些測試,又發現引號外面的$有和沒有是一樣的。一直也沒去找究竟,剛才有人問了我,于是就去翻了下man bash,找到了解釋。

(1).如果沒有特殊定制bash環境或有特殊需求,$"string"和"string"是完全等價的,使用$""只是為了保證本地化。

以下是man bash關于$""的解釋:

       A  double-quoted  string  preceded by a dollar sign ($"string") will cause the string to be translated according to the current locale.  If
       the current locale is C or POSIX, the dollar sign is ignored.  If the string is translated and replaced, the replacement is double-quoted.

(2).還有$后接單引號的$'string',這在bash中被特殊對待:會將某些反斜線序列(如\n,\t,\",\'等)繼續轉義,而不認為它是字面符號(如果沒有$符號,單引號會強制將string翻譯為字面符號,包括反斜線)。簡單的例子:

[root@xuexi ~]# echo 'anb'
anb
[root@xuexi ~]# echo $'anb'
a
b

以下是man bash里關于$'的說明:

Words of the form $'string' are treated specially.  The word expands to string, with backslash-escaped characters replaced as specified  by  the ANSI C standard.  Backslash escape sequences, if present, are decoded as follows:
              a     alert (bell)
              b     backspace
              e
              E     an escape character
              f     form feed
              n     new line
              r     carriage return
              t     horizontal tab
              v     vertical tab
              \     backslash
              '     single quote
              \"     double quote
              \nnn   the eight-bit character whose value is the octal value nnn (one to three digits)
              \xHH   the eight-bit character whose value is the hexadecimal value HH (one or two hex digits)
              \uHHHH the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value HHHH (one to four hex digits)
              \UHHHHHHHH
                     the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value HHHHHHHH (one to eight hex digits)
              \cx    a control-x character

(5).禁止反斜線轉義功能。

[root@xuexi ~]# read -r
what is you name \&;

[root@xuexi ~]# echo $REPLY
what is you name \&;

(6).不回顯輸入的字符。比如輸入密碼的時候,不回顯輸入密碼。

[root@xuexi ~]# read -s -p "please enter your password: "
please enter your password:

[root@xuexi ~]# echo $REPLY
123456

(7).將讀取的行分割后賦值給變量。

[root@xuexi ~]# read var1 var2 var3
abc def  galsl djks

[root@xuexi ~]# echo $var1:::$var2:::$var3
abc:::def:::galsl djks

(8).給出輸入時間限制。沒完成的輸入將被丟棄,所以變量將賦值為空(如果在執行read前,變量已被賦值,則此變量在read超時后將被覆蓋為空)。

[root@xuexi ~]# var=5

[root@xuexi ~]# read -t 3 var
1

[root@xuexi ~]# echo $var

1.3 while read line

如果read不明確指定按字符數讀取文件(或標準輸入),那么默認是按行讀取的,而且每讀一行都會在那一行處打上標記(即文件指針。當然,按字符數讀取也一樣會打上標記),表示這一次已經讀取到了這個地方,使得下次仍然能夠從這里開始繼續向下讀取。這使得read結合while使用的時候,是按行讀數據非常好的方式。

例如:

[root@xuexi ~]# cat test1
a
b
c
d

# 用法示例1
[root@xuexi ~]# cat test1 | while read line;do echo $line;done
a
b
c
d

# 用法示例2
[root@xuexi ~]# while read line;do echo $line;done test1
a
b
c
d

# 用法示例3:請對比下面這條命令和上面的
[root@xuexi ~]# while read line test1;do echo $line;done

關于while read line,需要注意幾個事項:

1.強烈建議,不要在管道后面使用while read line。正如上面第1個示例中 cat test1|while read line。因為管道會開啟子shell,使得while中的命令都在子shell中執行,而且,cat test1會一次性將test1文件所有數據裝入內存,如果test1文件足夠大,會直接占用巨量內存。而第二個示例使用輸入重定向的方式則每次只占用一行數據的內存,而且是在當前shell環境下執行的,while內的變量賦值、數組賦值在退出while后仍然有效。

2.不要使用示例3,因為測試了就知道為什么不用,它會在每次循環的時候都重新打開test1文件,使得每次都從頭開始讀數據,而不是每次從上一次標記的地方繼續讀數據。

所以,在使用while read line的時候,能用示例2的方式就用示例2,如果你還不理解或者找不到其它方式,那么直接記住這個結論。

到此這篇關于SHELL腳本read命令的具體用法的文章就介紹到這了,更多相關SHELL read命令內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • 一條命令讓你明白shell中read命令的常用參數

標簽:河池 隴南 通遼 黔南 河北 淮南 黔南 常州

巨人網絡通訊聲明:本文標題《SHELL腳本read命令的具體用法》,本文關鍵詞  SHELL,腳本,read,命令,的,具體,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《SHELL腳本read命令的具體用法》相關的同類信息!
  • 本頁收集關于SHELL腳本read命令的具體用法的相關信息資訊供網民參考!
  • 推薦文章
    欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品
  • <rt id="w000q"><acronym id="w000q"></acronym></rt>
  • <abbr id="w000q"></abbr>
    <rt id="w000q"></rt>
    久久久99久久| 国产成人免费在线观看不卡| 俄罗斯女人裸体性做爰| 一区二区三区四区五区| 国产日韩欧美麻豆| 麻豆视频一区二区| jlzzjizz在线播放观看| 欧美精品一卡二卡| 亚洲地区一二三色| 丰满少妇一区二区三区专区| 色综合天天综合网国产成人综合天 | 日本亚洲视频在线| 一级黄色免费视频| 欧美精品一卡二卡| 图片区日韩欧美亚洲| 亚洲免费观看在线| 欧美裸体一区二区三区| 亚洲第一在线综合网站| 在线看黄色的网站| 欧美福利视频一区| 日韩精品一级中文字幕精品视频免费观看 | 亚洲精品一区二区三区精华液| 裸体在线国模精品偷拍| 91成人在线免费视频| 久久综合九色综合97婷婷女人| 激情六月婷婷久久| 2017亚洲天堂| 亚洲天堂中文字幕| 一个人看的视频www| 制服.丝袜.亚洲.中文.综合| 日韩在线观看一区二区| 成年人免费观看视频网站| 久久综合九色综合97婷婷| 国产精品一区二区91| 极品久久久久久| 亚洲免费在线电影| 特级特黄刘亦菲aaa级| 91精品黄色片免费大全| 美日韩一级片在线观看| 欧美波霸videosex极品| 国产精品久久久久久亚洲伦| 91麻豆国产自产在线观看| 3d成人h动漫网站入口| 久久99精品久久久久久久久久久久| 国产精品成人在线视频| 亚洲欧洲日产国码二区| 国产精九九网站漫画| 欧美大片一区二区| 国产成人亚洲综合a∨婷婷| 色婷婷久久久久swag精品| 午夜在线成人av| 在线观看免费黄色网址| 亚洲理论在线观看| 久久久久久久久久久久久久久| 欧美激情一区二区三区四区| 日本黄色www| www国产精品av| 91在线你懂得| 欧美一级欧美三级| 热久久一区二区| 中文字幕人妻一区二区三区在线视频| 中文字幕欧美激情| 亚洲成人激情小说| 日韩久久精品一区| 国产久卡久卡久卡久卡视频精品| 国产suv一区二区三区| 亚洲国产成人高清精品| av黄色在线免费观看| 国产丝袜欧美中文另类| 性活交片大全免费看| 久久夜色精品国产欧美乱极品| 成人免费电影视频| 3atv一区二区三区| 国产成都精品91一区二区三| 欧美私人免费视频| 久久99精品一区二区三区三区| 一本色道久久综合亚洲91| 日日摸夜夜添夜夜添亚洲女人| 日韩欧美视频免费观看| 亚洲一线二线三线视频| 国产成人免费观看网站| 亚洲一区二区在线观看视频 | 国产在线观看免费播放| 欧美精品一区二区三区很污很色的| 国产 欧美在线| 9191久久久久久久久久久| 国产乱人伦偷精品视频不卡| 欧美午夜寂寞影院| 国产精品996| 日韩一区二区在线看| 成人av免费在线| 精品1区2区在线观看| av中文一区二区三区| 日韩美一区二区三区| 99久久精品免费看国产免费软件| 日韩欧美国产综合一区| av不卡在线播放| www激情久久| 男人操女人下面视频| 久久综合九色综合97婷婷| 中文字幕18页| 国产精品你懂的在线欣赏| 少妇光屁股影院| 一区二区三区日本| 美国一级片在线观看| 免费在线观看成人| 色综合久久久久网| 久久精品国产亚洲a| 欧美性一级生活| 国产a视频精品免费观看| 日韩欧美成人激情| 国产69视频在线观看| 亚洲欧洲日产国码二区| 日韩av片在线| 麻豆91在线观看| 91精品国产高清一区二区三区蜜臀| 成人av免费观看| 国产免费成人在线视频| 一本色道久久综合亚洲精品图片 | 福利视频网站一区二区三区| 日韩精品一区二区三区蜜臀 | 国产成人亚洲综合色影视 | 成人毛片老司机大片| 久久久久久影视| 精品人妻一区二区三区四区| 三级在线观看一区二区 | 国产aaaaaaaaa| 日本欧美久久久久免费播放网| 色综合亚洲欧洲| 成人av网站免费| 国产精品麻豆视频| 日韩欧美视频免费观看| 国产乱子伦视频一区二区三区| 日韩欧美一级精品久久| 人体私拍套图hdxxxx| 爽好多水快深点欧美视频| 欧美日韩免费一区二区三区| 91性感美女视频| 亚洲激情成人在线| 欧美亚洲尤物久久| 91日韩在线专区| 亚洲视频一区二区在线观看| 在线观看91精品国产入口| 99国产精品一区| 亚洲视频在线观看一区| 色婷婷国产精品综合在线观看| 成人网男人的天堂| 亚洲日本一区二区三区| 色94色欧美sute亚洲线路一ni| 国产高清在线观看免费不卡| 精品国内二区三区| 色综合久久五月| 日本网站在线观看一区二区三区| 91精品国产一区二区三区蜜臀| 亚洲图片综合网| 欧美bbbbb| 26uuu精品一区二区| 国产精品成人一区二区三区电影毛片 | 在线一区二区三区| 成年人性生活视频| 香蕉成人伊视频在线观看| 日韩三级免费观看| 亚洲国产欧美视频| 久久国产精品无码网站| 国产日韩欧美电影| 91国产视频在线观看| 亚洲一区二区三区黄色| 蜜桃91丨九色丨蝌蚪91桃色| 久久蜜桃av一区精品变态类天堂 | 欧美中文字幕久久| 性猛交╳xxx乱大交| 日韩电影网1区2区| 久久久久一区二区三区四区| 色欧美片视频在线观看| 免费看毛片的网站| 精品在线观看视频| 中文字幕乱视频| 日韩电影免费一区| 久久久久久电影| 9.1人成人免费视频网站| 日本中文字幕有码| 免费高清不卡av| 中文字幕国产一区二区| 在线观看不卡一区| 97人妻精品一区二区免费| 高清国产一区二区三区| 一区二区成人在线| 日韩一级视频免费观看在线| 卡一卡二卡三在线观看| 99视频在线观看一区三区| 日韩精品一二三| 国产色产综合产在线视频| 91久久奴性调教| 一卡二卡三卡四卡| 成人性视频免费网站| 日本不卡免费在线视频| 国产精品福利一区| 日韩一区二区免费视频| 天海翼在线视频| 国产在线观看免费播放|