我有一个脚本,它接受用户输入的密码。在密码提示之后,无论我在下一行运行什么命令,该命令的输出都会在密码提示处打印。如何避免在密码提示时打印输出。
代码:
echo -n "Enter Password:"
read -s password
预期输出:
Enter Password:
Login successful.
电流输出:
Enter Password:Login successful.
echo
读取密码后一行:
echo -n "Enter Password:"
read -s password
echo
只要有可能,我喜欢利用阅读提示。 此外,通常最好使用 printf 而不是 echo。 就我而言,我会安排这样的事情:
read -reps "Enter password: "
printf '%s\n' "" "Say what you'd like. " ""
读取命令使用 -r 来抑制任何转义字符(出于安全原因通常是一个很好的做法);它使用 -p 允许出现引号中的提示;它使用 -e (按行读取)和 -s (静默用户输入)。
在此 printf 示例中,每对引号出现在新行上(对于每个字符串 (%s) 使用换行符 ( ))。 如上所述,这将总共输出三行。 您可以根据需要构建它。 (如果你只想在某个地方有一个空白换行符,你可以在它自己的行上添加
printf '\n'
。)