📜  捕获输入 bash - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:10:09.925000             🧑  作者: Mango

捕获输入 bash - Shell-Bash

在Shell脚本中,我们经常需要从用户那里获取输入。本文将介绍如何在Bash Shell中捕获输入。

获取输入

在Bash Shell中获取输入,可以使用read命令。这个命令允许程序员从标准输入中读取一行。

read variable

这里variable是一个变量,将包含从标准输入读取的字符。例如:

read name
echo "Hello ${name}"

我们输入我们的名字后,程序会输出“Hello”和我们的名字。

获取多行输入

如果我们需要从用户那里获取多行输入,则必须使用while循环读取每行,直到遇到EOF。在Bash Shell中,EOF表示Ctrl+d

while read line
do
    echo "You entered: ${line}"
done

当你执行这个脚本,你可以输入多行文本,直到你按下Ctrl+d为止。

获取不回显输入

有时候我们需要用户输入敏感信息,如密码等。我们不希望这些信息被显示在屏幕上。这时,我们可以使用read命令的-s选项来关闭回显。

read -s password
echo "Your password is: ${password}"

当我们在输入密码时,我们不会看到密码被打印在屏幕上。

获取输入超时

有时候我们需要在一定时间内获取用户的输入。我们可以使用read命令的-t选项来实现这一点。

if read -t 5 -p "Enter your name in 5 seconds: " name
then
    echo "Hello ${name}"
else
    echo "Time is up!"
fi

这个脚本会尝试读取用户输入,但如果用户在5秒内没有输入,程序将会输出“Time is up!”。如果用户在5秒内输入了名字,则输出“Hello”和用户名。

结论

在Bash Shell中,读取用户输入是一项基本的任务。read命令使这项任务变得简单。在本文中,我们介绍了如何捕获单行和多行输入,以及如何获取不回显输入和输入超时。