read 指令
read 指令
echo
和read
配合使用,可以编写一些基本的 Linux 脚本,就用vim
写,很爽。
read
命令用于从标准输入读取数值。
|
|
参数列表:
-
-a
:后跟一个变量,该变量会被认为是个数组,然后给其赋值,默认是以空格为分割符。主要用于将输入参数存放到数组中。a 就是 array 的意思创建 shell 脚本
abc.sh
:1 2
read -a arr echo get ${#arr[@]} values in arra
测试
当然,你可以在交互式命令行中使用
read
命令 -
-d
:后面跟一个标志符,其实只有其后的第一个字符有用,作为结束的标志。正常情况下,按 enter 就表示输入结束,然后执行 read 的下一个指令,但是当你一个参数想输入多行的时候或者别的原因,你可以自定义结束符,比如".",这样在你输入".“之前,read 的输入不会结束,输入 enter 也不会结束。d 就是 delimiter 的意思,分隔符。 -
-p
:后面跟提示信息,即在输入前打印提示信息。p 是 print 的意思注意,
-p
后面跟的参数要用引号引起来,不然就跟接受输入的变量名搞混了。 -
-e
:在输入的时候可以使用命令补全功能。即按 Tab 键自动补全的功能。 -
-n
:后跟一个数字,定义输入文本的长度,很实用,这个参数不是一个参数只能输入这么多,是不管你有多少个参数都只能输入这么多,空格也会算在内。-n
和后面的数字可以连写当输入到指定个数的字符的时候会自动停止输入,执行
read
后面的命令。 -
-r
:屏蔽\
,如果没有该选项,则\
作为一个转义字符,有的话\
就是个普通文本字符了。不带
-r
: 输入的\
是转义字符,再echo
的时候不显示,带
-r
:输入的\
会正常显示 -
-s
:安静模式,在输入字符时不再屏幕上显示,即隐藏,(实际上,数据是显示的,只是read
命令将文本颜色设置成与背景相同的颜色),例如login
时输入密码。 -
-t
:后面跟秒数,定义输入字符的等待时间。时间过后没有输入会自动结束,输入到一半时间到了,也会自动结束,已经输入了的会作为你的全部输入。
此外:如果没有指定接收变量名name
,读取的数据将被自动赋值给特定的变量REPLY
中,通过$REPLY
获取,name
名字可以有多个,跟-a
将所有输入放到一个数组变量中不同,这里是把多个输入放到多个变量中。规则是:
如果输入的数据数量少于变量的个数,那么多余的变量不会获取到数据,即变量值为空。
如果输入的数据数量多于变量的个数,那么超出的数据将都赋值给最后一个变量。
我们在《Bash read 命令》中对 read 已经有了详细的学习。