Linux中read命令的用法

时间:2020-12-03 10:35:08
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
结束
转自: http://www.2cto.com/os/201309/244429.html