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
将直接输出变量名。