【每天一个Linux命令】05. Linux中read命令的用法

 

1. 简单读取

 

read命令接收标准输入(键盘)的输入或其他文件描述符的输入,得到输入后,read命令将数据放入一个标准变量中。下面是 read命令的最简单形式:

 

 

01bixiaopeng@bixiaopengtekiMacBook-Pro linuxTest$ vi read-simple.sh
02 
03#!/bin/bash
04#这里默认会换行
05echo "enter your website: "
06#读取从键盘的输入
07read website
08echo "your website is $website"
09exit 0  #退出
10 
11 
12#直接执行shell的结果
13bixiaopeng@bixiaopengtekiMacBook-Pro linuxTest$ sh read-simple.sh
14enter your website:
15www.wirelessqa.com
16your website is www.wirelessqa.com
17 
18#如果想看清楚每一步的执行,可以加上-x
19bixiaopeng@bixiaopengtekiMacBook-Pro linuxTest$ sh -x read-simple.sh
20echo 'enter your website: '
21enter your website:
22read website
23www.wirelessqa.com
24echo 'your website is www.wirelessqa.com'
25your website is www.wirelessqa.com
26exit 0

 

2.直接跟上提示read -p 

 

 

01bixiaopeng@bixiaopengtekiMacBook-Pro linuxTest$ vi read-p.sh
02 
03#1.读取单个变量
04 
05#!/bin/bash
06 
07read -p "enter your website: " website #这里的变量只有一个,也可以有多个
08echo "your website is $website"
09exit 0
10 
11 
12#执行结果
13bixiaopeng@bixiaopengtekiMacBook-Pro linuxTest$ sh read-p.sh
14enter your website: www.wirelessqa.com
15your website is www.wirelessqa.com
16 
17#2.读取多个变量
18 
19bixiaopeng@bixiaopengtekiMacBook-Pro linuxTest$ vi read-p-more.sh
20 
21 
22#!/bin/bash
23#读取输入的多个变量
24read -p "enter your name and website: " name website
25echo "your name is $name,your websit is $website"
26exit 0
1#执行结果
2bixiaopeng@bixiaopengtekiMacBook-Pro linuxTest$ sh -x read-p-more.sh
3read -p 'enter your name and website: ' name website
4enter your name and website: bixiaopeng www.wirelessqa.com
5echo 'your name is bixiaopeng,your websit is www.wirelessqa.com'
6your name is bixiaopeng,your websit is www.wirelessqa.com
7exit 0

 

3.计时输入read -t 

 

 

-t选项指定read命令等待输入的秒数。当计时满时,read命令返回一个非零退出状态;

 

使用read命令存在着潜在危险。脚本很可能会停下来一直等待用户的输入。如果无论是否输入数据脚本都必须继续执行,那么可以使用-t选项指定一个计时器。

 

 

 

01bixiaopeng@bixiaopengtekiMacBook-Pro linuxTest$ vi read-t.sh
02 
03 
04bixiaopeng@bixiaopengtekiMacBook-Pro linuxTest$ cat read-t.sh
05#!/bin/bash
06 
07if read -t 10 -p "请在10秒内输入毕小朋博客的地址: " website
08then
09   if [ $website = "www.wirelessqa.com" ]
10   then
11      echo "你输入的地址是对的:$website"
12   else
13      echo "你输入的网址是错的:$website"
14   fi
15else
16   echo "对不起,你已超时,请在10秒内输入!"
17fi
18exit 0
19 
20#执行结果1
21bixiaopeng@bixiaopengtekiMacBook-Pro linuxTest$ sh read-t.sh
22请在10秒内输入毕小朋博客的地址: 对不起,你已超时,请在10秒内输入!
23 
24#执行结果2
25bixiaopeng@bixiaopengtekiMacBook-Pro linuxTest$ sh read-t.sh
26请在10秒内输入毕小朋博客的地址: weibo.com/wirelessqa
27你输入的网址是错的:weibo.com/wirelessqa
28 
29#执行结果3
30bixiaopeng@bixiaopengtekiMacBook-Pro linuxTest$ sh read-t.sh
31请在10秒内输入毕小朋博客的地址: www.wirelessqa.com
32你输入的地址是对的:www.wirelessqa.com

 

4.计数输入read -n数量

 

当输入的字符数目达到预定数目时,自动退出,并将输入的数据赋值给变量

 

 

01bixiaopeng@bixiaopengtekiMacBook-Pro linuxTest$ vi read-n.sh
02 
03bixiaopeng@bixiaopengtekiMacBook-Pro linuxTest$ cat read-n.sh
04#!/bin/bash
05 
06#例子1.只接收一个输入就退出
07read -n1 -p "你喜欢老毕的博客吗[y/n]? " answer
08case $answer in
09Y | y)
10   echo " 好,谢谢哈!";;
11N | n)
12   echo " oh,我会继续努力的!";;
13*)
14   echo " 输入错误,请输入y/n";;
15esac
16 
17#例子2.只接收2个输入就退出
18read -n2 -p "请随便输入两个字符: " any
19echo " 您输入的两个字符是:$any"
20exit 0
21 
22#执行结果
23bixiaopeng@bixiaopengtekiMacBook-Pro linuxTest$ sh read-n.sh
24你喜欢老毕的博客吗[y/n]? n oh,我会继续努力的!
25请随便输入两个字符: ai 您输入的两个字符是:ai

 

5.隐藏输入read -s

 

 

01bixiaopeng@bixiaopengtekiMacBook-Pro linuxTest$ vi read-s.sh
02bixiaopeng@bixiaopengtekiMacBook-Pro linuxTest$ cat read-s.sh
03#!/bin/bash
04#如果想让用户的输入不显示在屏幕上,请使用read -s
05read -s -p "请输入你的密码: " pass
06echo
07echo "你的密码是: $pass"
08exit 0
09 
10#执行结果
11bixiaopeng@bixiaopengtekiMacBook-Pro linuxTest$ sh read-s.sh
12请输入你的密码:
13你的密码是: bixiaopeng

 

6.读取文件

每次调用read命令都会读取文件中的”一行”文本。当文件没有可读的行时,read命令将以非零状态退出。

通过什么样的方法将文件中的数据传给read呢?使用cat命令并通过管道将结果直接传送给包含read命令的while命令

 

01bixiaopeng@bixiaopengtekiMacBook-Pro linuxTest$ vi read-file.sh
02 
03bixiaopeng@bixiaopengtekiMacBook-Pro linuxTest$ cat read-file.sh
04#!/bin/bash
05 
06count=1
07cat read-s.sh |while read line #通过cat read-s.sh文件的输出,作为read 的输入给line
08do
09   echo "$count: $line"
10   count=$[ $count + 1 ]
11done
12echo "结束"
13exit 0
14 
15#执行结果
16bixiaopeng@bixiaopengtekiMacBook-Pro linuxTest$ sh read-file.sh
171: #!/bin/bash
182: #如果想让用户的输入不显示在屏幕上,请使用read -s
193: read -s -p "请输入你的密码: " pass
204: echo
215: echo "你的密码是: $pass"
226: exit 0
23结束

 

订阅

微信搜索“毕小烦”或者扫描下面的二维码,即可订阅我的文章。

image.png

如果文章对你有帮助,请随手点个赞吧!

(完)

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

毕小烦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值