Linux中read命令的用法
1. 簡單讀取
read命令接收標准輸入(鍵盤)的輸入或其他文件描述符的輸入,得到輸入後,read命令將數據放入一個標准變量中。下面是 read命令的最簡單形式:
C代碼
bixiaopeng@bixiaopengtekiMacBook-Pro linuxTest$ vi read-simple.sh
#!/bin/bash
#這裡默認會換行
echo "enter your website: "
#讀取從鍵盤的輸入
read website
echo "your website is $website"
exit 0 #退出
#直接執行shell的結果
bixiaopeng@bixiaopengtekiMacBook-Pro linuxTest$ sh read-simple.sh
enter your website:
www.wirelessqa.com
your website is www.wirelessqa.com
#如果想看清楚每一步的執行,可以加上-x
bixiaopeng@bixiaopengtekiMacBook-Pro linuxTest$ sh -x read-simple.sh
+ echo 'enter your website: '
enter your website:
+ read website
www.wirelessqa.com
+ echo 'your website is www.wirelessqa.com'
your website is www.wirelessqa.com
+ exit 0
2.直接跟上提示read -p
C代碼
bixiaopeng@bixiaopengtekiMacBook-Pro linuxTest$ vi read-p.sh
#1.讀取單個變量
#!/bin/bash
read -p "enter your website: " website #這裡的變量只有一個,也可以有多個
echo "your website is $website"
exit 0
#執行結果
bixiaopeng@bixiaopengtekiMacBook-Pro linuxTest$ sh read-p.sh
enter your website: www.wirelessqa.com
your website is www.wirelessqa.com
#2.讀取多個變量
bixiaopeng@bixiaopengtekiMacBook-Pro linuxTest$ vi read-p-more.sh
#!/bin/bash
#讀取輸入的多個變量
read -p "enter your name and website: " name website
echo "your name is $name,your websit is $website"
exit 0
#執行結果
bixiaopeng@bixiaopengtekiMacBook-Pro linuxTest$ sh -x read-p-more.sh
+ read -p 'enter your name and website: ' name website
enter your name and website: bixiaopeng www.wirelessqa.com
+ echo 'your name is bixiaopeng,your websit is www.wirelessqa.com'
your name is bixiaopeng,your websit is www.wirelessqa.com
+ exit 0
3.計時輸入read -t
-t選項指定read命令等待輸入的秒數。當計時滿時,read命令返回一個非零退出狀態;
使用read命令存在著潛在危險。腳本很可能會停下來一直等待用戶的輸入。如果無論是否輸入數據腳本都必須繼續執行,那麼可以使用-t選項指定一個計時器。
C代碼
bixiaopeng@bixiaopengtekiMacBook-Pro linuxTest$ vi read-t.sh
bixiaopeng@bixiaopengtekiMacBook-Pro linuxTest$ cat read-t.sh
#!/bin/bash
if read -t 10 -p "請在10秒內輸入畢小朋博客的地址: " website
then
if [ $website = "www.wirelessqa.com" ]
then
echo "你輸入的地址是對的:$website"
else
echo "你輸入的網址是錯的:$website"
fi
else
echo "對不起,你已超時,請在10秒內輸入!"
fi
exit 0
#執行結果1
bixiaopeng@bixiaopengtekiMacBook-Pro linuxTest$ sh read-t.sh
請在10秒內輸入畢小朋博客的地址: 對不起,你已超時,請在10秒內輸入!
#執行結果2
bixiaopeng@bixiaopengtekiMacBook-Pro linuxTest$ sh read-t.sh
請在10秒內輸入畢小朋博客的地址: weibo.com/wirelessqa
你輸入的網址是錯的:weibo.com/wirelessqa
#執行結果3
bixiaopeng@bixiaopengtekiMacBook-Pro linuxTest$ sh read-t.sh
請在10秒內輸入畢小朋博客的地址: www.wirelessqa.com
你輸入的地址是對的:www.wirelessqa.com
4.計數輸入read -n數量
當輸入的字符數目達到預定數目時,自動退出,並將輸入的數據賦值給變量
01
bixiaopeng@bixiaopengtekiMacBook-Pro linuxTest$ vi read-n.sh
02
03
bixiaopeng@bixiaopengtekiMacBook-Pro linuxTest$ cat read-n.sh
04
#!/bin/bash
05
06
#例子1.只接收一個輸入就退出
07
read -n1 -p "你喜歡老畢的博客嗎[y/n]? " answer
08
case $answer in
09
Y | y)
10
echo " 好,謝謝哈!";;
11
N | n)
12
echo " oh,我會繼續努力的!";;
13
*)
14
echo " 輸入錯誤,請輸入y/n";;
15
esac
16
17
#例子2.只接收2個輸入就退出
18
read -n2 -p "請隨便輸入兩個字符: " any
19
echo " 您輸入的兩個字符是:$any"
20
exit 0
21
22
#執行結果
23
bixiaopeng@bixiaopengtekiMacBook-Pro linuxTest$ sh read-n.sh
24
你喜歡老畢的博客嗎[y/n]? n oh,我會繼續努力的!
25
請隨便輸入兩個字符: ai 您輸入的兩個字符是:ai
5.隱藏輸入read -s
01
bixiaopeng@bixiaopengtekiMacBook-Pro linuxTest$ vi read-s.sh
02
bixiaopeng@bixiaopengtekiMacBook-Pro linuxTest$ cat read-s.sh
03
#!/bin/bash
04
#如果想讓用戶的輸入不顯示在屏幕上,請使用read -s
05
read -s -p "請輸入你的密碼: " pass
06
echo
07
echo "你的密碼是: $pass"
08
exit 0
09
10
#執行結果
11
bixiaopeng@bixiaopengtekiMacBook-Pro linuxTest$ sh read-s.sh
12
請輸入你的密碼:
13
你的密碼是: bixiaopeng
6.讀取文件
每次調用read命令都會讀取文件中的”一行”文本。當文件沒有可讀的行時,read命令將以非零狀態退出。
通過什麼樣的方法將文件中的數據傳給read呢?使用cat命令並通過管道將結果直接傳送給包含read命令的while命令
01
bixiaopeng@bixiaopengtekiMacBook-Pro linuxTest$ vi read-file.sh
02
03
bixiaopeng@bixiaopengtekiMacBook-Pro linuxTest$ cat read-file.sh
04
#!/bin/bash
05
06
count=1
07
cat read-s.sh |while read line #通過cat read-s.sh文件的輸出,作為read 的輸入給line
08
do
09
echo "$count: $line"
10
count=$[ $count + 1 ]
11
done
12
echo "結束"
13
exit 0
14
15
#執行結果
16
bixiaopeng@bixiaopengtekiMacBook-Pro linuxTest$ sh read-file.sh
17
1: #!/bin/bash
18
2: #如果想讓用戶的輸入不顯示在屏幕上,請使用read -s
19
3: read -s -p "請輸入你的密碼: " pass
20
4: echo
21
5: echo "你的密碼是: $pass"
22
6: exit 0
23
結束