Linux read命令

pursuer.chen發表於2016-04-28

介紹

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

本站點所有隨筆都是原創,歡迎大家轉載;但轉載時必須註明文章來源,且在文章開頭明顯處給明連結。

《歡迎交流討論》

相關文章