ENV:
[root@Fedora31 ~]# uname -r
5.5.15-200.fc31.x86_64
[root@Fedora31 ~]# cat /etc/redhat-release
Fedora release 31 (Thirty One)
read在bash中的使用是非常多的,可以读取键盘输入的内容,使用的语法也相对简单。
1.设定输入(读取)字符数量,对输入内容有长短限制时使用
读取n个字符保存到variable_name
read -n number_of_chars variable_name
read -n 2 var #当输入任意词,只要到2个字符就退出并保存到var内
echo $var #显示上一步保存到var内的内容
例:
[root@Fedora31 ~]# read -n 2 var
ad[root@Fedora31 ~]# echo $var //上一步回车后直接输入ad两个字符后直接退出,不用手动按回车键确认
ad
2.读取输入的密码,但不显示输入的密码,登陆账号时如不想密码显示在屏上时使用
read a password in non-echoed mode:
#输入的密码不显示在屏上
read -s var
例:
[root@Fedora31 ~]# read -s var
//这里为光标显示,输入的任何信息都不显示在屏上,输入完后要手动按回车键确认
[root@Fedora31 ~]# echo $var
1234
3.在键盘输入前显示提示信息,有提示信息时能更人性化,清晰明了
display a message with read:
read -p "Enter input:" var
例:
[root@Fedora31 ~]# read -p "Enter input:" var
Enter input:123 //这里的123为用户键盘输入,但是是直接显示在屏上,手动按回车键确认完成
[root@Fedora31 ~]# echo $var
123
4.在指定时间后退出输入并把已输入内容保存到参数中,如登陆时在指定时间未完成输入则直接退出或其他提示
read the input after a timeout:
在指定秒数后退出
read -t timeout var
read -t 2 var
# read the string that is typed within 2 seconds into variable var.
例:
[root@Fedora31 ~]# read -t 5 var
[root@Fedora31 ~]# echo $var
//这里内容为空,是因为上一步等待的5秒时间内没有从键盘输入任何信息,5秒后直接退出的
[root@Fedora31 ~]#
5.设定限制符,输入指定限制符后保存限制符之前内容并退出
use a delimiter character to end the input line:
输入指定字符后退出并把之前内容保存到var内
read -d delim_charvar
read -d ":" var
hello: #var is set to hello
例:
[root@Fedora31 ~]# read -d ":" var //限制符为":",也可使用其他限制符,输入限制符后直接退出
hello:[root@Fedora31 ~]# echo $var
hello
6.多参数同时使用效果更好
提示输入信息,但是不在屏上显示输入内容,三种都可以实现
a.
[root@Fedora31 ~]# read -p "Enter input:" -s var
Enter input:[root@Fedora31 ~]# echo $var //提示“Enter input:"后输入内容并回车,内容不显示
123
b.
[root@Fedora31 ~]# read -s -p "Enter input:" var
Enter input:[root@Fecho $var
1234
c.
[root@Fedora31 ~]# read -sp "Enter input:" var
Enter input:[root@Fecho $var input:" var
12345
其他的参数组合也可以的,如等待30秒后没有操作给出提示等。可根据实际情况选择参数组合。