在本小节中,我们将学习如何从终端和脚本中读取(获取)用户输入。
要读取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,执行后得到以下结果:
如果不使用read命令传递变量,将会发生什么?
如果我们不使用read
命令传递变量,则可以在显示输入时传递一个名为REPLY
的内置变量(应以$
符号为前缀)。可以参考以下程序说明:
#!/bin/bash
# using read command without any variable
echo "Enter name : "
read
echo "Name : $REPLY"
将上面脚本代码保存到文件:read-reply.sh,然后执行,得到以下结果:
示例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,然后执行,得到以下结果:
注意:在脚本的第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,然后执行,得到以下结果: