read 指令

警告
本文最后更新于 2023-10-22,文中内容可能已过时。

read 指令

echoread配合使用,可以编写一些基本的 Linux 脚本,就用vim写,很爽。

read命令用于从标准输入读取数值。

1
read [options] [name ...]

参数列表:

  • -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 已经有了详细的学习。

0%