read在shell中的应用

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秒后没有操作给出提示等。可根据实际情况选择参数组合。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值