read命令
read命令从键盘读取变量的值,通常在Shell脚本中用于与用户进行交互。该命令可以一次读取多个变量的值,变量和输入的值之间需要用空格隔开。如果未指定变量名,则读取的数据将自动赋值给特定变量REPLY。
语法
代码语言:javascript复制read [选项] [参数]选项
-p:指定读取值时的提示符;-t:指定读取值时等待的时间(以秒为单位)。
参数
变量:指定读取值的变量名。
示例
下面列出了read命令的常见用法示例:
读取变量值并赋给变量1987name:
read 1987name读取输入到第一个空格或回车,将第一个单词赋值给变量first,剩余输入赋值给变量last:
read first last读取一行输入并赋值给特定变量REPLY:
read将单词列表读入数组arrayname:
read -a arrayname打印提示文本并等待输入,将输入存储在REPLY中:
read -p "text"允许输入包含反斜杠:
代码语言:javascript复制read -r line指定等待时间为3秒:
代码语言:javascript复制read -t 3从输入中读取两个字符并存入变量var,无需按回车读取:
read -n 2 var用定界符:结束输入行:
read -d ":" var示例
以下是read命令的示例:
读取输入并赋值给变量1987name:
# read 1987name #等待读取输入,直到按回车表示输入完毕,并将输入赋值给变量answer
HelloWorld #控制台输入Hello
#echo $1987name #打印变量
HelloWorld依次读取一组输入,以空格隔开,直到按回车结束,并将分别赋值给三个变量:
代码语言:javascript复制#read one two three
1 2 3 #在控制台输入1 2 3,以空格隔开。
#echo "one = $one, two = $two, three = $three"
one = 1, two = 2, three = 3使用特定内置变量REPLY读取输入:
#read #等待控制台输入,并将结果赋值给特定内置变量REPLY。
This is REPLY #在控制台输入该行。
#echo $REPLY #打印特定内置变量REPLY,以确认是否正确赋值。
This is REPLY使用-p选项输出提示文本并等待输入,将结果赋值给REPLY:
#read -p "Enter your name: " #输出提示文本,同时等待输入,并将结果赋值给REPLY。
Enter your name: stephen #在提示文本后输入"stephen"
#echo $REPLY
stephen读取输入信息并将其视为数组赋值给数组变量friends,输入信息用空格隔开数组的每个元素:
#read -a friends
Tim Tom Helen
#echo "They are ${friends[0]}, ${friends[1]} and ${friends[2]}."
They are Tim, Tom and Helen.输入密码时不显示密码的示例(方法1):
代码语言:javascript复制#!/bin/bash
read -p "输入密码:" -s pwd
echo
echo password read, is "$pwd"(方法2):
代码语言:javascript复制#!/bin/bash
stty -echo
read -p "输入密码:" pwd
stty echo
echo
echo 输入完毕。其中,-echo选项禁止将输出发送到终端,而echo选项则允许发送输出。
使用read命令从键盘读取变量值并赋给指定的变量,输入以下命令:
read v1 v3 #读取变量值执行上述命令后,要求输入两个数据,如下所示:
代码语言:javascript复制Linux c #输入数据完成后,可以使用echo命令输出查看指定变量的值,输入以下命令:
echo $v1 $v3 #输出变量的值执行输出变量值的命令后,将显示用户输入的数据值,如下所示:
代码语言:javascript复制Linux c #输出变量值注意:使用echo命令输出变量值时,必须在变量名前添加$符号。否则,echo将直接输出变量名。


