原文链接:https://www.cnblogs.com/lottu/p/3962921.html
shell--read命令
read命令 -p(提示语句) -n(字符个数) -t(等待时间) -s(不回显)
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
内容更新:
read命令从标准输入接收多个值到变量的原理: 变量$IFS起的作用
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1. 基本读取:
read命令接收标准输入(键盘)的输入,或者其它文件描述符的输入(重定向等)。 得到输入后,read命令将数据放入一个标准变量中。下面举例:
测试:
由于read命令提供了-p参数,允许在read命令行中直接指定一个提示。所以上面的脚本可以修改如下:
测试:
上面例子中的read后面只有一个变量name,其实也可以有多个; 如果你在read后面定义了多个变量,比如三个,则在键盘上输入的第一个值给第一个变量,第二个值给第二个变量,第三个值给第三个变量。 如果键盘输入的值少于变量数,例如只输入了一个值,那就只给第一个变量赋值,以此类推; 若输入的值多于变量数,则将多输入的值都赋给最后一个变量。下面举例:
2. 计时输入:
使用read命令存在潜在的危险:脚本可能停下来一直等待用户输入。 如果无论用户是否输入,脚本都得往下执行,那么可使用read命令的-t 参数,指定一个定时器。
举例:
测试:执行脚本不从键盘输入:
5s后:
除了设置输入时间计时器,还可以设置对键盘输入字符数的计数。 当输入的字符数到达设定的数目时,自动退出,并将输入的数据赋值给变量。
举例:
测试:
该例子使用了-n选项,后接数值1,指示read命令只要接受到一个字符就退出。只要按下一个字符进行回答,read命令立即接受输入并将其传给变量。无需按回车键。
但这里有个换行的小毛病没解决。
3. 默读(输入不显示在监视器上):
有些时候,脚本需要用户输入,但不希望输入的数据显示在屏幕上。典型的例子就是输入密码。 -s 选项能够使read命令输入的数据不显示在监视器上(实际上,数据是显示的,只是read命令将文本颜色设置成与背景相同的颜色)。
举例:
测试:
还是换行问题,所以试验效果有点差。
4. 读文件:
最后,还可以使用read命令读取linux系统中的文件。
每次调用read命令都会读取文件中的"一行"文本。当文件没有可读的行时,read命令将以非零状态退出。
读取文件的关键是如何将文本中的数据传送给read命令。 一般都是通过管道符 、重定向符等这类符号将文件内容传给read命令。
举例:
测试:
再来个例子:
测试: