read---讀取變量值
阿新 • • 發佈:2018-11-22
多個 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---讀取變量值