📜  zsh 等待用户输入 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 14:48:43.365000             🧑  作者: Mango

Zsh:等待用户输入 – Shell-Bash

在 Shell/Bash 编程中,我们经常需要等待用户输入来继续执行脚本。在 Zsh 中,我们可以使用 read 命令来实现这一功能。

使用 read

read 命令可以从标准输入读取一行文本,并将其保存到指定的变量中。例如,以下脚本将提示用户输入名字并将其保存到 $name 变量中:

#!/usr/bin/env zsh

echo "What is your name?"
read name

echo "Hello, $name!"

运行该脚本将输出:

What is your name?
John Doe
Hello, John Doe!
添加提示信息

通常,我们希望在读取用户输入之前向用户提供一些提示信息。为此,我们可以在 read 命令中使用 -p 选项。例如:

#!/usr/bin/env zsh

read -p "What is your name? " name

echo "Hello, $name!"

运行该脚本将输出:

What is your name? John Doe
Hello, John Doe!
隐藏密码

有时我们需要读取密码而不让其显示在终端上。为此,我们可以使用 read 命令中的 -s 选项。例如:

#!/usr/bin/env zsh

read -s -p "Enter your password: " password

echo "Your password is $password"

运行该脚本将显示以下提示并等待用户输入密码:

Enter your password:

在用户输入密码后,该脚本将输出:

Your password is securepassword
设置超时

有时,我们需要在一定时间内等待用户输入。为此,我们可以在 read 命令中使用 -t 选项。例如:

#!/usr/bin/env zsh

if read -t 5 -p "Enter your name in 5 seconds: " name; then
  echo "Hello, $name!"
else
  echo "Time out!"
fi

运行该脚本将显示以下提示并等待用户输入:

Enter your name in 5 seconds:

如果用户在 5 秒内输入了名称,则该脚本将输出:

Hello, John Doe!

否则,该脚本将输出:

Time out!
总结

read 命令是 Zsh 编程中等待用户输入的常用工具。我们可以使用 -p 选项在读取用户输入前提供提示信息,使用 -s 选项隐藏密码,使用 -t 选项设置超时。这些选项使得 read 命令非常灵活,适用于许多常见的编程场景。