Linux系统中read的用法,Linux中read命令的用法

1. 简单读取

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

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

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选项指定一个计时器。

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 $answerin

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$ shread-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$ shread-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$ shread-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.wirelessqa.com欢迎转载或分享,但请务必声明文章出处。如果文章对您有帮助,希望您能推荐或关注。

-a 后跟一个变量,该变量会被认为是个数组,然后给其赋值,默认是以空格为分割符。

-d 后面跟一个标志符,其实只有其后的第一个字符有用,作为结束的标志,会举例说  明。

-p 后面跟提示信息,即在输入前打印提示信息。

-e 在输入的时候可以时候命令补全功能。

-n 后跟一个数字,定义输入文本的长度,很实用。

-r 屏蔽\,如果没有该选项,则\作为一个转义字符,有的话 \就是个正常的字符了。

-s 安静模式,在输入字符时不再屏幕上显示,例如login时输入密码。

-t 后面跟秒数,定义输入字符的等待时间。

-u 后面跟fd,从文件描述符中读入,该文件描述符可以是exec新开启的。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值