Linux命令之获取用户键盘输入read

概述

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

在这里插入图片描述

该命令被用来从标准输入读取单行数据。这个命令可以用来读取键盘输入,当使用重定向的时候,可以读取文件中的一行数据。

注:该命令可用于在脚本中获取用户的输入信息,即与脚本调用者进行交互。

语法

该命令的语法如下:

read [选项] [参数]

该命令支持的选项有:

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

使用

读取一个信息

可以直接读取信息,然后保存到它所指向的变量中。语法格式如下:

# 语法
read 变量名
# 示例,读取一个信息然后保存到变量 num 中,如果要使用这个变量需要通过 $num 来读取里面的值
read num

在这里插入图片描述

指定提示信息

我们可以使用 -p 选项给定一个提示信息,来告诉调用者需要传入什么信息。语法格式如下:

# 语法
read -p 提示信息 变量名
# 示例,即让用户从键盘输入一个文件路径
read -p "请输入一个文件路径:" path

在这里插入图片描述

指定超时时间

如果用户一直不输入信息,脚本不可能一直等待下去,可以通过 -t 选项设定一个超时时间,单位是秒。当超时后,read 命令返回一个非零的退出状态码。语法格式如下:

# 语法
read -t 超时秒数 变量名
# 示例,指定超时时间为 5 秒
read -t 5 num

在这里插入图片描述

指定输入字符个数

我们可以通过 -n 选项设置允许输入的个数,当输入的字符个数达到指定数目时,自动退出,并将输入的数据赋值给变量。通常可以用在要求用户输入 Y 或者 N 表示 “yes” 或者 “no” 时,只需要输入一个字符。语法格式如下:

# 语法
read -n 指定字符个数 变量名
# 示例
read -p "请问是否继续 [Y/N]?" -n 1 answer

在这里插入图片描述
该例子使用了 -n 选项,后接数值 1,指示 read 命令只要接受到一个字符就退出。只要按下一个字符进行回答,read 命令立即接受输入并将其传给变量,无需按回车键。

输入密码字符

如果我们想要输入的信息不显示在命令行终端上,实际上,数据是显示的,只是 read 命令将文本颜色设置成了与背景相同的颜色。而通常输入密码就使用这个选项。语法个数如下:

# 语法
read -s 变量名
# 示例
read -s -p "请输入你的密码:" password

在这里插入图片描述

读取文件

通常还可以使用 read 命令来循环读取文件中的内容,通常在脚本中应用。每次调用 read 命令逗号读取文件中的“一行”文本,当文件没有可读的行时,read 命令将以非零状态退出。使用 cat 命令和管道符就可以将文件内容直接传递给包含 read 命令的 while 命令。语法格式如下:

cat 文件路径 | while read 行变量名
do
	循环体
done

例如,读取 test.txt 文件的脚本如下:

#!/bin/bash

# 将文件 test.txt 中每行的内容赋值给 line 变量,然后在循环体中可以使用这个变量的值进行一些操作
cat /root/test.txt | while read line
do
    echo "该行内容为:$line"
done

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值