我有一个接受用户名和密码或使用预设变量的脚本。我希望将此信息回显给用户,以便他们知道它已设置,但不想显示实际密码。
如何打印正确数量的*而不是密码?
答案 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模式替换中没有外部程序可以通过,那么优势很明显。