回显密码以使用bash从变量屏幕显示为*

时间:2011-11-24 10:11:05

标签: bash

我有一个接受用户名和密码或使用预设变量的脚本。我希望将此信息回显给用户,以便他们知道它已设置,但不想显示实际密码。

如何打印正确数量的*而不是密码?

5 个答案:

答案 0 :(得分:1)

使用带有-s选项的read命令。

答案 1 :(得分:1)

要将密码打印为您可以执行的*字符串:

echo $passwd | sed -e 's/./*/g'

答案 2 :(得分:1)

AWK解决方案1:

[jaypal~/Temp]$ echo "password" | awk '{a=length($0); for (i=1;i<=a;i++) printf "*"}'
********

AWK解决方案2:

[jaypal~/Temp]$ echo "password" | awk '{gsub(/./,"*",$0); print}'
********

答案 3 :(得分:0)

喜欢,如果密码存储在变量pawd中,那么

for((i=1;i<=(${#pawd});i++));do printf "%s" "*";done;printf "\n"

答案 4 :(得分:-1)

如果可见字符不能是&#39; *&#39;,那么简单的shell模式替换就可以完成这项工作

echo ${password//?/+}

星号而不是加号将导致shell扩展的问题。用反斜杠逃避星号不会产生正确的结果。

如果在shell模式替换中没有外部程序可以通过,那么优势很明显。