Linux命令之文件管理 (四十六)

Linux read 命令

inux read命令用于從標(biāo)準(zhǔn)輸入讀取數(shù)值店诗。

read 內(nèi)部命令被用來(lái)從標(biāo)準(zhǔn)輸入讀取單行數(shù)據(jù)独旷。這個(gè)命令可以用來(lái)讀取鍵盤輸入,當(dāng)使用重定向的時(shí)候岔冀,可以讀取文件中的一行數(shù)據(jù)个榕。

語(yǔ)法

read [-ers] [-a aname] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...]

參數(shù)說(shuō)明:

-a 后跟一個(gè)變量篡石,該變量會(huì)被認(rèn)為是個(gè)數(shù)組,然后給其賦值西采,默認(rèn)是以空格為分割符凰萨。
-d 后面跟一個(gè)標(biāo)志符,其實(shí)只有其后的第一個(gè)字符有用械馆,作為結(jié)束的標(biāo)志胖眷。
-p 后面跟提示信息,即在輸入前打印提示信息霹崎。
-e 在輸入的時(shí)候可以時(shí)候命令補(bǔ)全功能珊搀。
-n 后跟一個(gè)數(shù)字,定義輸入文本的長(zhǎng)度尾菇,很實(shí)用食棕。
-r 屏蔽\,如果沒(méi)有該選項(xiàng)错沽,則\作為一個(gè)轉(zhuǎn)義字符簿晓,有的話 \就是個(gè)正常的字符了。
-s 安靜模式千埃,在輸入字符時(shí)不再屏幕上顯示憔儿,例如login時(shí)輸入密碼。
-t 后面跟秒數(shù)放可,定義輸入字符的等待時(shí)間谒臼。
-u 后面跟fd,從文件描述符中讀入耀里,該文件描述符可以是exec新開(kāi)啟的蜈缤。

實(shí)例

1、簡(jiǎn)單讀取

#!/bin/bash

#這里默認(rèn)會(huì)換行  
echo "輸入網(wǎng)站名: "  
#讀取從鍵盤的輸入  
read website  
echo "你輸入的網(wǎng)站名是 $website"  
exit 0  #退出

測(cè)試結(jié)果為:

輸入網(wǎng)站名: 
www.runoob.com
你輸入的網(wǎng)站名是 www.runoob.com

2冯挎、-p參數(shù)底哥,允許在 read 命令行中直接指定一個(gè)提示

#!/bin/bash

read -p "輸入網(wǎng)站名:" website
echo "你輸入的網(wǎng)站名是 $website" 
exit 0

測(cè)試結(jié)果為:

你輸入的網(wǎng)站名是 www.runoob.com

3、-t參數(shù)指定read 命令等待輸入的秒數(shù)趾徽,當(dāng)計(jì)時(shí)滿時(shí)续滋,read命令返回一個(gè)非零退出狀態(tài)

#!/bin/bash

if read -t 5 -p "輸入網(wǎng)站名:" name
then
    echo "你輸入的網(wǎng)站名是 $website"
else
    echo "\n抱歉孵奶,你輸入超時(shí)了疲酌。"
fi
exit 0

執(zhí)行程序不輸入,等待 5 秒后:

輸入網(wǎng)站名:
抱歉了袁,你輸入超時(shí)了

4朗恳、除了輸入時(shí)間計(jì)時(shí),還可以使用 -n參數(shù)設(shè)置 read 命令計(jì)數(shù)輸入的字符载绿。當(dāng)輸入的字符數(shù)目達(dá)到預(yù)定數(shù)目時(shí)僻肖,自動(dòng)退出,并將輸入的數(shù)據(jù)賦值給變量卢鹦。

#!/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選項(xiàng)臀脏,后接數(shù)值1,指示read 命令只要接受到一個(gè)字符就退出冀自。只要按下一個(gè)字符進(jìn)行回答揉稚,read 命令立即接受輸入并將其傳給變量,無(wú)需按回車鍵熬粗。

只接收 2 個(gè)輸入就退出:

#!/bin/bash

read -n2 -p "請(qǐng)隨便輸入兩個(gè)字符: " any
echo "\n您輸入的兩個(gè)字符是:$any"
exit 0

執(zhí)行程序輸入兩個(gè)字符:

請(qǐng)隨便輸入兩個(gè)字符: 12 您輸入的兩個(gè)字符是:12
5搀玖、-s選項(xiàng)能夠使read命令中輸入的數(shù)據(jù)不顯示在命令終端上(實(shí)際上,數(shù)據(jù)是顯示的驻呐,只是 read 命令將文本顏色設(shè)置成與背景相同的顏色)灌诅。輸入密碼常用這個(gè)選項(xiàng)。

#!/bin/bash

read  -s  -p "請(qǐng)輸入您的密碼:" pass
echo "\n您輸入的密碼是 $pass"
exit 0

執(zhí)行程序輸入密碼后是不顯示的:

請(qǐng)輸入您的密碼:
您輸入的密碼是 runoob

6.讀取文件

每次調(diào)用read命令都會(huì)讀取文件中的一行 文本含末。當(dāng)文件沒(méi)有可讀的行時(shí)猜拾,read命令將以非零狀態(tài)退出。

通過(guò)什么樣的方法將文件中的數(shù)據(jù)傳給 read 呢佣盒?使用cat 命令并通過(guò)管道將結(jié)果直接傳送給包含 read 命令的 while 命令挎袜。

測(cè)試文件 test.txt 內(nèi)容如下:

123
456
runoob

測(cè)試代碼:

#!/bin/bash
  
count=1    # 賦值語(yǔ)句,不加空格
cat test.txt | while read line      # cat 命令的輸出作為read命令的輸入,read讀到>的值放在line中
do
   echo "Line $count:$line"
   count=$[ $count + 1 ]          # 注意中括號(hào)中的空格肥惭。
done
echo "finish"
exit 0

執(zhí)行結(jié)果為:

Line 1:123
Line 2:456
Line 3:runoob
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末盯仪,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子蜜葱,更是在濱河造成了極大的恐慌全景,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,692評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件牵囤,死亡現(xiàn)場(chǎng)離奇詭異爸黄,居然都是意外死亡滞伟,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,482評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門馆纳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)诗良,“玉大人汹桦,你說(shuō)我怎么就攤上這事鲁驶。” “怎么了舞骆?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,995評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵钥弯,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我督禽,道長(zhǎng)脆霎,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,223評(píng)論 1 292
  • 正文 為了忘掉前任狈惫,我火速辦了婚禮睛蛛,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘胧谈。我一直安慰自己忆肾,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,245評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布菱肖。 她就那樣靜靜地躺著客冈,像睡著了一般。 火紅的嫁衣襯著肌膚如雪稳强。 梳的紋絲不亂的頭發(fā)上场仲,一...
    開(kāi)封第一講書(shū)人閱讀 51,208評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音退疫,去河邊找鬼渠缕。 笑死,一個(gè)胖子當(dāng)著我的面吹牛褒繁,可吹牛的內(nèi)容都是我干的褐健。 我是一名探鬼主播,決...
    沈念sama閱讀 40,091評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼澜汤,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼蚜迅!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起俊抵,我...
    開(kāi)封第一講書(shū)人閱讀 38,929評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤谁不,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后徽诲,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體刹帕,經(jīng)...
    沈念sama閱讀 45,346評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡吵血,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,570評(píng)論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了偷溺。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蹋辅。...
    茶點(diǎn)故事閱讀 39,739評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖挫掏,靈堂內(nèi)的尸體忽然破棺而出侦另,到底是詐尸還是另有隱情,我是刑警寧澤尉共,帶...
    沈念sama閱讀 35,437評(píng)論 5 344
  • 正文 年R本政府宣布褒傅,位于F島的核電站,受9級(jí)特大地震影響袄友,放射性物質(zhì)發(fā)生泄漏殿托。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,037評(píng)論 3 326
  • 文/蒙蒙 一剧蚣、第九天 我趴在偏房一處隱蔽的房頂上張望支竹。 院中可真熱鬧,春花似錦鸠按、人聲如沸礼搁。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,677評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)叹坦。三九已至,卻和暖如春卑雁,著一層夾襖步出監(jiān)牢的瞬間募书,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,833評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工测蹲, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留莹捡,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,760評(píng)論 2 369
  • 正文 我出身青樓扣甲,卻偏偏與公主長(zhǎng)得像篮赢,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子琉挖,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,647評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 官網(wǎng) 中文版本 好的網(wǎng)站 Content-type: text/htmlBASH Section: User ...
    不排版閱讀 4,380評(píng)論 0 5
  • 系統(tǒng)管理與維護(hù)命令 date date(選項(xiàng))(參數(shù)) | 選項(xiàng) | 說(shuō)明 | | :-------- | ...
    蓓蓓的萬(wàn)能男友閱讀 3,888評(píng)論 0 5
  • linux資料總章2.1 1.0寫的不好抱歉 但是2.0已經(jīng)改了很多 但是錯(cuò)誤還是無(wú)法避免 以后資料會(huì)慢慢更新 大...
    數(shù)據(jù)革命閱讀 12,159評(píng)論 2 33
  • ORA-00001: 違反唯一約束條件 (.) 錯(cuò)誤說(shuō)明:當(dāng)在唯一索引所對(duì)應(yīng)的列上鍵入重復(fù)值時(shí)启泣,會(huì)觸發(fā)此異常。 O...
    我想起個(gè)好名字閱讀 5,308評(píng)論 0 9
  • 成功源于不自滿示辈,不自滿當(dāng)反思寥茫。 關(guān)于工作 振興家鄉(xiāng)教育靠我們,我們靠課堂矾麻,如何打造“高效”課堂纱耻,“...
    云起四月閱讀 466評(píng)論 0 3