答案1
您链接到的文档描述了read
Bash 的内置功能。在其他 shell 中read
可能支持较少的选项,不同的选项。POSIXread
有文档记录这里。
要两次提示用户输入信息,请使用read
twice。要检查响应是否匹配,请将它们作为字符串进行比较。一个可移植的基本示例:
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
因为它会抑制回声,从而使纠正错误变得困难。此模式在要求输入密码等时很有用。此答案中的代码片段仅验证一个字符串是否与另一个字符串匹配。检查字符串是否为有效的电子邮件地址是一个单独的(并且不平凡) 任务。