Bash读取用户输入

在本小节中,我们将学习如何从终端和脚本中读取(获取)用户输入。

要读取Bash用户输入,需要使用内置的Bash命令read。它用于从用户处获取输入并分配给变量。它仅从Bash shell中读取一行。以下是read命令的语法。

read <variable_name>

以下是从Bash脚本读取用户输入的示例:

示例1:

在此示例中,使用read命令从Bash脚本中读取了单个变量和多个变量。

#!/bin/bash  

# Read the user input   

echo "Enter the your name: "  
read user_name  
echo "Your name is $user_name"  
echo  
echo "Enter your age, phone and email: "  
read age phone email  
echo "your age is:$age, phone is:$phone, email: $email "

将上面示例代码保存到文件:read-input1.sh,执行后得到以下结果:

Bash读取用户输入

如果不使用read命令传递变量,将会发生什么?

如果我们不使用read命令传递变量,则可以在显示输入时传递一个名为REPLY的内置变量(应以$符号为前缀)。可以参考以下程序说明:

#!/bin/bash  
# using read command without any variable  
echo "Enter name : "  
read  
echo "Name : $REPLY"

将上面脚本代码保存到文件:read-reply.sh,然后执行,得到以下结果:
REPLY内置变量

示例2:

在此示例中,使用-p PROMPT命令行选项在同一行上输入,如下所示:

read -p PROMPT <variable_name>

示例程序:

#!/bin/bash  

read -p "username:" user_var  
echo "The username is: " $user_var

将上面脚本代码保存到文件:read-prompt.sh,然后执行,得到以下结果:

同一行上输入

示例3:

此示例将输入保持在静默模式,这样命令行上的用户输入都将对其他用户隐藏。
因此,通常使用命令行选项(-s-p)来传递用户名并隐藏密码(静默模式),如下所示:

read -sp PROMPT <variable_name>

其中-s指示用户将输入保持在静默模式,-p指示用户在新的命令提示符下输入。

示例代码:

#!/bin/bash  

read -p "username : " user_var  
read -sp "password : " pass_var  
echo  
echo "username : " $user_var  
echo "password : "  $pass_var

将上面脚本代码保存到文件:read-sprompt.sh,然后执行,得到以下结果:

Bash读取密码输入

注意:在脚本的第5行,echo命令输出了空行,因为如果不留空,则它将在同一行上输出密码和用户名。

因此,通过添加echo命令空白行来编写脚本。

示例4

此示例是使用数组输入多个输入。因此,使用-a命令行选项,如下所示:

read -a <variable_name>

其中-a指示脚本读取数组,而variable_name是引用的数组变量名称。

示例程序

#!/bin/bash  

# Reading multiple inputs using an array  

echo "Enter names : "  
read -a names  
echo "The entered names are : ${names[0]}, ${names[1]}."

将上面脚本代码保存到文件:read-array.sh,然后执行,得到以下结果:


上一篇:Bash变量

下一篇:Bash日期格式化

关注微信小程序
程序员编程王-随时随地学编程

扫描二维码
程序员编程王

扫一扫关注最新编程教程