1. 程式人生 > >read---讀取變量值

read---讀取變量值

多個 ont friend bash exit 示例 讀取文件 提示 常用

read命令從鍵盤讀取變量的值,通常用在shell腳本中與用戶進行交互的場合。該命令可以一次讀取多個變量的值,變量和輸入的值都需要使用空格隔開。在read命令後面,如果沒有指定變量名,讀取的數據將被自動賦值給特定的變量REPLY

 

read命令示例

從標準輸入讀取輸入並賦值給變量1987name。
#read name        #等待讀取輸入,直到回車後表示輸入完畢,並將輸入賦值給變量answer
HelloWorld            #控制臺輸入Hello

#echo $name       #打印變量
HelloWorld

還可以使用 -n 參數設置 read 命令計數輸入的字符。當輸入的字符數目達到預定數目時,自動退出,並將輸入的數據賦值給變量。

[root@xiaolizi ~]# read -t 4 -p "輸入:" name
輸入:[root@xiaolizi ~]# read -n 2 -p "ss: " hehe
ss: sd[root@xiaolizi ~]#

-t 參數指定 read 命令等待輸入的秒數,當計時滿時,read命令返回一個非零退出狀態。

#!/bin/bash

if read -t 5 -p "輸入網站名:" name
then
    echo "你輸入的網站名是 $website"
else
    echo "\n抱歉,你輸入超時了。"
fi
exit 0

執行程序不輸入,等待 5 秒後:

輸入網站名:
抱歉,你輸入超時了

等待一組輸入,每個單詞之間使用空格隔開,直到回車結束,並分別將單詞依次賦值給這三個讀入變量。
#read one two three
1 2 3                   #在控制臺輸入1 2 3,它們之間用空格隔開。

#echo "one = $one, two = $two, three = $three"
one = 1, two = 2, three = 3
REPLY示例
#read                  #等待控制臺輸入,並將結果賦值給特定內置變量REPLY。
This is REPLY          #在控制臺輸入該行。


#echo $REPLY           #打印輸出特定內置變量REPLY,以確認是否被正確賦值。

This is REPLY
-p選項示例
#read -p "Enter your name: "            #輸出文本提示,同時等待輸入,並將結果賦值給REPLY。
Enter you name: stephen                 #在提示文本之後輸入stephen

#echo $REPLY
stephen
等待控制臺輸入,並將輸入信息視為數組,賦值給數組變量friends,輸入信息用空格隔開數組的每個元素。
#read -a friends
Tim Tom Helen

#echo "They are ${friends[0]}, ${friends[1]} and ${friends[2]}."
They are Tim, Tom and Helen.
補充一個終端輸入密碼時候,不讓密碼顯示出來的例子。方法1:
#!/bin/bash
read -p "輸入密碼:" -s pwd
echo
echo password read, is "$pwd"

讀取文件

每次調用 read 命令都會讀取文件中的 "一行" 文本。當文件沒有可讀的行時,read 命令將以非零狀態退出。

通過什麽樣的方法將文件中的數據傳給 read 呢?使用 cat 命令並通過管道將結果直接傳送給包含 read 命令的 while 命令。

測試文件 test.txt 內容如下:

123
456
runoob

測試代碼:

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

執行結果為:

Line 1:123
Line 2:456
Line 3:runoob
finish

read---讀取變量值