我想提示用户输入一个秘密值(例如:密码变量,信用卡,一些密钥/令牌),并希望看看是否有办法显示最后一个N(比如4个字符)那个变量的价值。
例: 输入您的信用卡号码:1234567898765432
我可以使用ex stty -echo/echo
的包装来隐藏用户输入或使用read -s variable
的内容,它会隐藏值,但我想要的只显示最后N个(例如: 4)这个变量的字符即
如果我说$ echo $mySecretVariable
(不确定我是否真的必须写一个函数)那么它会将值回显为:************5432
或你的令牌键值最后4以*******************C5fx
结束其中所有字符都用*
填充,只显示最后一个N.
答案 0 :(得分:2)
您可以使用此bash函数屏蔽除最后4个字符以外的所有字符:
mask() {
local r="${1?needs an argument}"
if ((${#r} > 4)); then
r="${r:0: -4}"
echo "${r//?/*}${1: -4}"
else
echo "$r"
fi
}
然后将其用作:
mask 1234567898765432
************5432
mask 123
123
mask 123456
**3456