shell read

作用:读取从键盘输入的数据

用法:read [-options] [variables]

 options表示选项;variables表示用来储存数据的变量,可以有一个或多个。

 optonsvariables都是可选的,如果没有提供变量名,那么读取的数据将存放到环境变量REPLY中。

选项

说明

-a array

把读取的数据赋值给数组 array,从下标 0 开始

-d delimiter

用字符串 delimiter 指定读取结束的位置,而不是一个换行符(读取到的数据不包括 delimiter)

-e

在获取用户输入的时候,对功能键进行编码转换,不会直接显式功能键对应的字符。

-n num

读取 num 个字符,而不是整行字符。

-p prompt

显示提示信息,提示内容为 prompt。

-r

原样读取(Raw mode),不把反斜杠字符解释为转义字符。

-s

静默模式(Silent mode),不会在屏幕上显示输入的字符。当输入密码和其它确认信息的时候,这是很有必要的。

-t seconds

设置超时时间,单位为秒。如果用户没有在指定时间内输入完成,那么 read 将会返回一个非 0 的退出状态,表示读取失败。

-u fd

使用文件描述符 fd 作为输入源,而不是标准输入,类似于重定向。

实例1:使用read命令给多个变量赋值。

 #! /bin/bash

 read -p "Enter some information >" name url age

 echo "网站名字: $name"

 echo "网址: $url"

 echo "年龄: $age"

运行结果:

Enter some information > C语言中文网 C语言中文网:C语言程序设计门户网站(入门教程、编程软件) 7

网站名字:C语言中文网

网址: C语言中文网:C语言程序设计门户网站(入门教程、编程软件)

年龄:7

注意:必须在一行内输入所有的值,不能换行,否则只能给第一个变量赋值,后续变量赋值都会失败,上例还是用了 -p选项,该选项会用一段文本提示用户输入。

实例2:只读取一个字符。

 #! /bin/bash

 read -n 1 -p "Enter a char >" char

 printf "\n"       -------------------->换行

 echo $char

运行结果:

Enter a char > 1

1

-n 1表示只读取一个字符。运行脚本后,只要用户输入一个字符,立即读取结束,不用等待用户按下回车键。

printf "\n"语句用来达到换行的效果,否则echo的输出结果会和用户输入的内容位于同一行,不容易区分。

实例3:在指定时间内输入密码。

 #! /bin/bash

 if

 read -t 20 -sp "Enter password in 20 seconds(once) > " pass1 && printf "\n" &&    #第一次输入密码

 read -t 20 -sp "Enter password in 20 seconds(again)> " pass2 && printf "\n" &&    #第二次输入密码

 [ $pass1 == $pass2 ]                                                                                                    #判断两次输入的密码是否相等

 then

          echo "Valid password"

 else

          echo "Invalid password"

 fi

这段代码中,我们使用&&组合了多个命令,这些命令会依次执行并且从整体上作为if语句的判断条件,只要其中一个命令执行失败(退出状态为非0值),整个判断条件就失败了,后续的命令也就没必要执行了。

只有在&&左边的命令返回为真,

才会执行&&右边的命令

如果两次密码相同,运行结果为:

Enter password in 20 second(once) >

Enter password in 20 second(again)>

Valid password

如果两次密码不同,运行结果为:

Enter password in 20 second(once) >

Enter password in 20 second(again)>

Invalid password

如果第一次输入超时,运行结果为:

Enter password in 20 seconds(once) > Invalid password

如果第二次输入超时,运行结果为:

Enter password in 20 second(once) >

Enter password in 20 second(again)> Invalid password

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值