shell中使用read命令接收键盘输入

read 命令从标准输入中读取一行,并把输入行的每个字段的值指定给 shell 变量

用法格式

1
2
3
read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...]
# 或
read [ -p ][ -r ][ -s ][ -u[ n ] ] [ VariableName?Prompt ][ VariableName ... ]

命令参数

1
2
3
4
5
6
7
8
9
-a 后跟一个变量,该变量会被认为是个数组,然后给其赋值,默认是以空格为分割符。
-d 后面跟一个标志符,其实只有其后的第一个字符有用,作为结束的标志。
-p 后面跟提示信息,即在输入前打印提示信息。
-e 在输入的时候可以时候命令补全功能。
-n 后跟一个数字,定义输入文本的长度。
-r 屏蔽,如果没有该选项,则作为一个转义字符,有的话就是个正常的字符。
-s 安静模式,在输入字符时不再屏幕上显示,例如login时输入密码。
-t 后面跟秒数,定义输入字符的等待时间。
-u 后面跟fd,从文件描述符中读入,该文件描述符可以是exec新开启的。

使用示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/bin/bash 
read -t 30 -p "Please input your name: " name
# 提示“请输入姓名”并等待30秒,把用户的输入保存入变量name中
echo "Name is $name"

read -s -t 30 -p "Please enter your age: " age
# 年龄是隐私,所以我们用“-s”选项隐藏输入
echo -e "\n"
echo "Age is $age"

read -n 1 -t 30 -p "Please select your gender[M/F]: " gender
# 使用“-n 1”选项只接收一个输入字符就会执行(都不用输入回车)
echo -e "\n"
echo "Sex is $gender"
有钱任性,请我吃包辣条
0%