溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Linux的read命令怎么使用

發(fā)布時(shí)間:2022-02-14 10:07:19 來源:億速云 閱讀:240 作者:iii 欄目:開發(fā)技術(shù)

本篇內(nèi)容介紹了“Linux的read命令怎么使用”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

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

Linux的read命令怎么使用

語法

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

參數(shù)說明:

  • -a 后跟一個(gè)變量,該變量會(huì)被認(rèn)為是個(gè)數(shù)組,然后給其賦值,默認(rèn)是以空格為分割符。

  • -d 后面跟一個(gè)標(biāo)志符,其實(shí)只有其后的第一個(gè)字符有用,作為結(jié)束的標(biāo)志。

  • -p 后面跟提示信息,即在輸入前打印提示信息。

  • -e 在輸入的時(shí)候可以使用命令補(bǔ)全功能。

  • -n 后跟一個(gè)數(shù)字,定義輸入文本的長度,很實(shí)用。

  • -r 屏蔽\,如果沒有該選項(xiàng),則\作為一個(gè)轉(zhuǎn)義字符,有的話 \就是個(gè)正常的字符了。

  • -s 安靜模式,在輸入字符時(shí)不再屏幕上顯示,例如login時(shí)輸入密碼。

  • -t 后面跟秒數(shù),定義輸入字符的等待時(shí)間。

  • -u 后面跟fd,從文件描述符中讀入,該文件描述符可以是exec新開啟的。

實(shí)例

1、簡單讀取

 #!/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
 你輸入的網(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)站名:" website
 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 命令立即接受輸入并將其傳給變量,無需按回車鍵。

只接收 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)文件沒有可讀的行時(shí),read 命令將以非零狀態(tài)退出。

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

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

 123
 456
 runoob

測(cè)試代碼:

 #!/bin/bash
   
 count=1    # 賦值語句,不加空格
 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
 finish

使用 -e 參數(shù),以下實(shí)例輸入字符 a 后按下 Tab 鍵就會(huì)輸出相關(guān)的文件名(該目錄存在的):

 $ read -e -p "輸入文件名:" str
 輸入文件名:a
 a.out    a.py     a.pyc    abc.txt  
 輸入文件名:a

“Linux的read命令怎么使用”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI