介紹
read命令是一個非常重要的bash命令,用於從鍵盤或者表中輸入中文字,並且可以和使用者進行互動;該命令可以一次讀取多個變數的值,變數和輸入的值都需要使用空格隔開。在read命令後面,如果沒有指定變數名,讀取的資料將被自動賦值給特定的變數REPLY,read的引數比較少使用的比較多的幾個引數包括:-a(用於陣列),-p(給出輸入的提示符),-t(指定讀取值時等待的時間單位是秒),-s(不顯示輸入的值,一般用於密碼的輸入);當然read也可以不使用引數。
1.不使用引數
[root@localhost bash]# read name
chen
[root@localhost bash]# echo $name
chen
2.讀取多個變數,變數之間要使用空格隔開,輸入的值也要空格對應。
[root@localhost bash]# read a b c 1 2 3 [root@localhost bash]# echo "a=$a b=$b c=$c" a=1 b=2 c=3
3.-a引數,使用-a引數那麼就相當於定義了一個陣列變數,輸入的如果是多個值那麼需要使用空格隔開,使用陣列時一定不要忘記“{}”大括號。
[root@localhost bash]# read -a fruit apple banana orange [root@localhost bash]# echo "all fruit is ${fruit[0]} ${fruit[1]} ${fruit[2]}" all fruit is apple banana orange
4.-p引數,給出輸入的提示,在輸入的時候給與指定的資訊提示,並將輸入的資訊賦值給var。
[root@localhost bash]# read -p "enter everything:" var enter everything:new [root@localhost bash]# echo $var new
5.-s引數,不顯示輸入的資訊,通常用於密碼的輸入
read -p "enter your password:" -s pwd enter your password: [root@localhost bash]# echo $pwd 123
6.-t引數,指定等待使用者輸入的時間,如果在指定的時間內沒有輸入資訊那麼就結束輸入
[root@localhost bash]# read -t 30 new abc [root@localhost bash]# echo $new abc
7.-r引數,允許輸入的值中包含反斜槓“\”,反斜槓也作為值輸出
[root@localhost bash]# read -r abc \a [root@localhost bash]# echo $abc \a
8.-d引數,以指定的字元作為命令的結束輸入,在未輸入指定的結束符之前輸入視窗一直存在按enter鍵也沒用,下面的例子中是使用分號作為結束輸入的符合也可以使用其它符合。
[root@localhost bash]# read -d ";" bb 1122 1111 ;[root@localhost bash]# echo $bb 1122 1111
9.-n引數,讀取指定的個字元給變數,當你輸入完指定給字元之後命令會自動終止。
[root@localhost bash]# read -n 3 name aaa[root@localhost bash]# echo $name aaa
列子中我指定了3個輸入字元給name變數,當我輸入完第三個a時輸入命令就自動終止。
1.接下來就來寫一個bash命令;bash命令的要求是當輸入1時顯示當前io資訊,輸入2時顯示cpu資訊,輸入3顯示記憶體資訊,輸入其它數字返回錯誤提示,如果10s未輸入則中斷輸入。
#!/bin/bash echo "Enter 1 is Select IO "; echo "Enter 2 is Select CPU"; echo "Enter 3 is Select Memory"; echo "please Enter 1 to 3 " read -t 10 num; case $num in 1)iostat;; 2)mpstat;; 3)free;; *)echo "no this num";; esac
注意:case裡面的命令不能使用`或者$讀取命令,而且直接輸入命令即可
2.使用\n做互動式輸入輸出
vim read
#!/bin/bash read -p "enter word:" a read -p "enter word:" b echo you have enter $a,$b
[root@localhost test]# echo -e "1\n2\n" |./read you have enter 1,2
還可以是來自檔案的輸入
[root@localhost test]# cat a
hello
word
[root@localhost test]# ./read < a
you have enter hello,word
注意:換行符是一個比較特殊符字元(\n)經常拿來做一些特殊的操作
總結
注意在read命令中引數必須放在變數名之前。
備註: 作者:pursuer.chen 部落格:http://www.cnblogs.com/chenmh 本站點所有隨筆都是原創,歡迎大家轉載;但轉載時必須註明文章來源,且在文章開頭明顯處給明連結。 《歡迎交流討論》 |