如何在 Linux 中两次提示用户输入信息?

如何在 Linux 中两次提示用户输入信息?

在 Linux(Debian/CentOS)中,我希望用户验证他的输入。

read email_address

这不包括验证和阅读手册不包括任何有关验证的章节。

如何验证数据?

答案1

您链接到的文档描述了readBash 的内置功能。在其他 shell 中read可能支持较少的选项,不同的选项。POSIXread有文档记录这里

要两次提示用户输入信息,请使用readtwice。要检查响应是否匹配,请将它们作为字符串进行比较。一个可移植的基本示例:

printf 'E-mail: '
read input1
printf 'Confirm e-mail: '
read input2
if [ "$input1" = "$input2" ]; then
   echo Match.
else
   echo Mismatch.
fi

Bash 的一个更高级的示例:

IFS= read -r -p 'E-mail: ' input1 \
&& IFS= read -r -p 'Confirm e-mail: ' input2 \
&& if [ "$input1" = "$input2" ]; then
   echo Match.
else
   echo Mismatch.
fi

已应用的进步:

  • -p(但不可移植)。
  • IFS= read -r …
  • 用 ; 链接命令&&,这样当且仅当两个命令都成功if … fi时才会执行该块。read

其他说明:

  • 在 Bash 中,您可以使用read -e,这将使用 Readline 及其相当先进的行编辑功能。如果没有此选项,行规则至少应该对 做出反应Backspace,因此用户仍然可以纠正自己的错误并在按下 之前检查输入Enter。使用 (Bash) 的 ,两次提示更有意义,read -s因为它会抑制回声,从而使纠正错误变得困难。此模式在要求输入密码等时很有用。

  • 此答案中的代码片段仅验证一个字符串是否与另一个字符串匹配。检查字符串是否为有效的电子邮件地址是一个单独的(并且不平凡) 任务。

相关内容