1. 简单读取
read命令接收标准输入(键盘)的输入或其他文件描述符的输入,得到输入后,read命令将数据放入一个标准变量中。下面是 read命令的最简单形式:
01 | bixiaopeng@bixiaopengtekiMacBook-Pro linuxTest$ vi read -simple.sh |
05 | echo "enter your website: " |
08 | echo "your website is $website" |
13 | bixiaopeng@bixiaopengtekiMacBook-Pro linuxTest$ sh read -simple.sh |
16 | your website is www.wirelessqa.com |
19 | bixiaopeng@bixiaopengtekiMacBook-Pro linuxTest$ sh -x read -simple.sh |
20 | + echo 'enter your website: ' |
24 | + echo 'your website is www.wirelessqa.com' |
25 | your website is www.wirelessqa.com |
2.直接跟上提示read -p
01 | bixiaopeng@bixiaopengtekiMacBook-Pro linuxTest$ vi read -p.sh |
07 | read -p "enter your website: " website |
08 | echo "your website is $website" |
13 | bixiaopeng@bixiaopengtekiMacBook-Pro linuxTest$ sh read -p.sh |
14 | enter your website: www.wirelessqa.com |
15 | your website is www.wirelessqa.com |
19 | bixiaopeng@bixiaopengtekiMacBook-Pro linuxTest$ vi read -p- more .sh |
24 | read -p "enter your name and website: " name website |
25 | echo "your name is $name,your websit is $website" |
2 | bixiaopeng@bixiaopengtekiMacBook-Pro linuxTest$ sh -x read -p- more .sh |
3 | + read -p 'enter your name and website: ' name website |
4 | enter your name and website: bixiaopeng www.wirelessqa.com |
5 | + echo 'your name is bixiaopeng,your websit is www.wirelessqa.com' |
6 | your name is bixiaopeng,your websit is www.wirelessqa.com |
3.计时输入read -t
-t选项指定read命令等待输入的秒数。当计时满时,read命令返回一个非零退出状态;
使用read命令存在着潜在危险。脚本很可能会停下来一直等待用户的输入。如果无论是否输入数据脚本都必须继续执行,那么可以使用-t选项指定一个计时器。
01 | bixiaopeng@bixiaopengtekiMacBook-Pro linuxTest$ vi read -t.sh |
04 | bixiaopeng@bixiaopengtekiMacBook-Pro linuxTest$ cat read -t.sh |
07 | if read -t 10 -p "请在10秒内输入毕小朋博客的地址: " website |
09 | if [ $website = "www.wirelessqa.com" ] |
11 | echo "你输入的地址是对的:$website" |
13 | echo "你输入的网址是错的:$website" |
16 | echo "对不起,你已超时,请在10秒内输入!" |
21 | bixiaopeng@bixiaopengtekiMacBook-Pro linuxTest$ sh read -t.sh |
22 | 请在10秒内输入毕小朋博客的地址: 对不起,你已超时,请在10秒内输入! |
25 | bixiaopeng@bixiaopengtekiMacBook-Pro linuxTest$ sh read -t.sh |
26 | 请在10秒内输入毕小朋博客的地址: weibo.com /wirelessqa |
27 | 你输入的网址是错的:weibo.com /wirelessqa |
30 | bixiaopeng@bixiaopengtekiMacBook-Pro linuxTest$ sh read -t.sh |
31 | 请在10秒内输入毕小朋博客的地址: www.wirelessqa.com |
32 | 你输入的地址是对的:www.wirelessqa.com |
4.计数输入read -n数量
当输入的字符数目达到预定数目时,自动退出,并将输入的数据赋值给变量
01 | bixiaopeng@bixiaopengtekiMacBook-Pro linuxTest$ vi read -n.sh |
03 | bixiaopeng@bixiaopengtekiMacBook-Pro linuxTest$ cat read -n.sh |
07 | read -n1 -p "你喜欢老毕的博客吗[y/n]? " answer |
18 | read -n2 -p "请随便输入两个字符: " any |
19 | echo " 您输入的两个字符是:$any" |
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 |
05 | read -s -p "请输入你的密码: " pass |
11 | bixiaopeng@bixiaopengtekiMacBook-Pro linuxTest$ sh read -s.sh |
6.读取文件
每次调用read命令都会读取文件中的”一行”文本。当文件没有可读的行时,read命令将以非零状态退出。
通过什么样的方法将文件中的数据传给read呢?使用cat命令并通过管道将结果直接传送给包含read命令的while命令
01 | bixiaopeng@bixiaopengtekiMacBook-Pro linuxTest$ vi read - file .sh |
03 | bixiaopeng@bixiaopengtekiMacBook-Pro linuxTest$ cat read - file .sh |
07 | cat read -s.sh | while read line |
16 | bixiaopeng@bixiaopengtekiMacBook-Pro linuxTest$ sh read - file .sh |
19 | 3: read -s -p "请输入你的密码: " pass |
21 | 5: echo "你的密码是: $pass" |