Linux 中的 read 命令从标准输入中读取一行,并把输入行的每个字段的值指定给 shell 变量。
从标准输入中读取一行。
read [-ers] [-a aname] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...]
参数 | 描述 |
---|---|
-a | 后跟一个变量,该变量会被认为是个数组,然后给其赋值,默认是以空格为分割符。 |
-d | 后面跟一个标志符,其实只有其后的第一个字符有用,作为结束的标志。 |
-p | 后面跟提示信息,即在输入前打印提示信息。 |
-e | 在输入的时候可以使用命令补全功能。 |
-n | 后跟一个数字,定义输入文本的长度,很实用。 |
-r | 屏蔽\,如果没有该选项,则\作为一个转义字符,有的话 \就是个正常的字符了。 |
-s | 安静模式,在输入字符时不再屏幕上显示,例如 login 时输入密码。 |
-t | 后面跟秒数,定义输入字符的等待时间。 |
-u | 后面跟 fd,从文件描述符中读入,该文件描述符可以是 exec 新开启的。 |
read 内部命令被用来从标准输入读取单行数据。这个命令可以用来读取键盘输入,当使用重定向的时候,可以读取文件中的一行数据。
实例 | 描述 |
---|---|
read varname | 将标准输入的值赋值给 varname 变量 |
read -p “promot” varname | 给出输入提示 |
read -t secs -p “promot” varname | 等待 secs 秒后,退出 |
read -n1 -p “promot” varname | 限制只输入一个字符 |
read -s -p “promot” varname | 输入不显示在终端,一般用于输入敏感信息 |
read -d ‘/’ | 指定读取结束的分隔符,不是回车 |
read 命令常用于 shell 脚本中。
read varname
我们使用 read 命令,读取标准输入,并赋值给变量 varname,具体命令如下:
read haicoder
运行后,终端输出如下:
我们看到,我们使用了 read 命令,读取标准输入,现在,在等待用户输入,我们输入任意字符串,输入完成后,按下回车,运行后,终端输出如下:
现在,我们使用 echo 命令,输出变量 haicoder 值,具体命令如下:
echo $haicoder
运行后,终端输出如下:
我们看到,变量 haicoder 的值就是我们输入的值。
read -p "promot" varname
我们使用 read 命令,读取标准输入并给出提示,并将输入结果赋值给变量 varname,具体命令如下:
read -p "Please input website: " haicoder
运行后,终端输出如下:
我们看到,我们使用了 read 命令,读取标准输入并且给出了输入提示,现在,在等待用户输入,我们输入任意字符串,输入完成后,按下回车,运行后,终端输出如下:
现在,我们使用 echo 命令,输出变量 haicoder 值,具体命令如下:
echo $haicoder
运行后,终端输出如下:
我们看到,变量 haicoder 的值就是我们输入的值。
read -t secs -p "promot" varname
我们使用 read 命令,读取标准输入并给出提示,同时,我们通过了 t 参数,设置等待 5 秒后退出,并将输入结果赋值给变量 varname,具体命令如下:
read -t 5 -p "Please input website: " haicoder
运行后,终端输出如下:
此时,我们一直没有输入,等待 5 秒后,自动退出了,如下图所示:
我们看到,我们在 5 秒内没有输入,自动退出了。
read -n1 -p "promot" varname
我们使用 read 命令,读取标准输入并给出提示,同时限定输入的字符个数,并将输入结果赋值给变量 varname,具体命令如下:
read -n 3 -p "Please input 3 character: " haicoder
运行后,终端输出如下:
我们看到,我们使用了 read 命令,读取标准输入并且给出了输入提示,现在,在等待用户输入,我们输入任意字符串,运行后,终端输出如下:
我们看到,我们输入了三个字符之后,自动就退出了。
read -s -p "promot" varname
我们使用 read 命令,读取标准输入并给出提示,同时不要回显在屏幕,并将输入结果赋值给变量 varname,具体命令如下:
read -s -p "Please input: " haicoder
运行后,终端输出如下:
我们看到,我们使用了 read 命令,读取标准输入并且给出了输入提示,现在,在等待用户输入,我们输入任意字符串,运行后,终端输出如下:
我们在终端进行了输入,但输入的内容并没有回显出来,我们按下回车后,如下图所示:
即,我们使用了 s 参数,实现了不回显。
Linux 中的 read 命令从标准输入中读取一行,并把输入行的每个字段的值指定给 shell 变量。