[Linux]Shell编程之read函数

作者: 忆往 分类: Linuxの生涯,学习の生涯 发布时间: 2018-07-03 23:05

作用:read是Linux的一个内建命令,主要完成对参数的赋值,类似C语言中的 scanf。其不仅可以赋值变量,还可以赋值数组;其输入不仅是屏幕,还可以是文件描述符。

语法:read [ -p ][  -r ][ -s ][ -u[ n ] ] [  VariableName?Prompt ][ VariableName … ]

参数:

-d :表示delimiter,即定界符,一般情况下是以IFS为参数的间隔,但是通过-d,我们可以定义一直读到出现执行的字符位置。
例如read –d madfds value,读到有m的字符的时候就不在继续向后读(只匹配后面第一个字符),例如输入为 hello m,有效值为“hello”
请注意m前面的空格等会被删除(m也不会输入进去)。这种方式可以输入多个字符串,例如定义“.”作为结符号等等
如果想以特殊符号作为分割比如 ; 需要加上转义字符 \;

-e :只用于互相交互的脚本,它将readline用于收集输入行。读到这几句话不太明白什么意思,先跳过。

-n :用于限定最多可以有多少字符可以作为有效读入。例如read –n 4 value1 value2,如果我们试图输入12 34,则只有前面有效的12 3,作为输入
实际上在你输入第4个字符‘3’后,就自动结束输入。这里结果是value为12,value2为3。

-p :用于给出提示符,在前面的例子中我们使用了echo –n “…“来给出提示符,可以使用read –p ‘… my promt?’value的方式只需一个语句来表示。

-r :在参数输入中,我们可以使用’/’表示没有输入完,换行继续输入,如果我们需要行最后的’/’作为有效的字符,可以通过-r来进行。
此外在输入字符中,我们希望/n这类特殊字符生效,也应采用-r选项。

-s :隐藏输入字符,常用于来输入密码

-t :用于表示等待输入的时间,单位为秒,等待时间超过,将继续执行后面的脚本

发表评论

电子邮件地址不会被公开。 必填项已用*标注