
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
read -p 换行
read可以读取键盘输入的字符,并赋值给指定的变量。
语法规则:
read [-rs] [-a ARRAY] [-d delim] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [var_name1 var_name2 ...]
read命令用于从标准输入中读取输入单行,并将读取的单行根据IFS变量分裂成多个字段,并将分割后的字段分别赋值给指定的变量列表var_name。第一个字段分配给第一个变量var_name1,第二个字段分配给第二个变量var_name2,依次到结束。如果指定的变量名少于字段数量,则多出的字段数量也同样分配给最后一个var_name,如果指定的变量命令多于字段数量,则多出的变量赋值为空。
如果没有指定任何var_name,则分割后的所有字段都存储在特定变量REPLY中。
具体选项含义:
选项说明:
-a:将分裂后的字段依次存储到指定的数组中,存储的起始位置从数组的index=0开始。
-d:指定读取行的结束符号。默认结束符号为换行符。
-n:限制读取N个字符就自动结束读取,如果没有读满N个字符就按下回车或遇到换行符,则也会结束读取。
-N:严格要求读满N个字符才自动结束读取,即使中途按下了回车或遇到了换行符也不结束。其中换行符或回车算一个字符。
-p:给出提示符。默认不支持"\n"换行,要换行需要特殊处理,见下文示例。例如,"-p 请输入密码:"
-r:禁止反斜线的转义功能。这意味着"\"会变成文本的一部分。
-s:静默模式。输入的内容不会回显在屏幕上。
-t:给出超时时间,在达到超时时间时,read退出并返回错误。也就是说不会读取任何内容,即使已经输入了一部分。
使用-p选项给出输入提示
[root@VM_0_15_centos ~/scripts]# read -p 'input your name: ' uname
input your name: sliusf
[root@VM_0_15_centos ~/scripts]# echo $uname
sliusf
但是-p不支持换行,也不支持\n。需要输入的信息跟在提示信息后面,不能另起一行。
但通过$'string'的方式特殊处理,就可以实现换行的功能。例如
[root@VM_0_15_centos ~/scripts]# read -p $'input your name : \n' uname
input your name :
liushijun
[root@VM_0_15_centos ~/scripts]# echo $uname
liushijun