填充并仅显示 masked/password/secret 变量值的最后 N 个字符
Padding and show only the last N characters of a masked/password/secret variable's value
我想提示用户输入一个秘密值(例如:密码变量、信用卡、一些 key/token)并想看看是否有办法显示最后一个 N(比方说该变量值的 4 个字符)。
例如:
输入您的信用卡# : 1234567898765432
我可以使用 ex stty -echo/echo
的包装器来隐藏用户将输入或使用的内容 read -s variable
并且它会隐藏值但我想要的是只显示最后一个 N(对于例如:4)这个变量的字符,即
如果我说 $ echo $mySecretVariable
(不确定我是否真的必须编写一个函数)那么它会将值回显为: ************5432
或者你的令牌键值最后 4 以 *******************C5fx
类似的结尾其中所有字符都将用 *
填充,并且只会显示最后一个 N。
您可以使用这个 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
我想提示用户输入一个秘密值(例如:密码变量、信用卡、一些 key/token)并想看看是否有办法显示最后一个 N(比方说该变量值的 4 个字符)。
例如: 输入您的信用卡# : 1234567898765432
我可以使用 ex stty -echo/echo
的包装器来隐藏用户将输入或使用的内容 read -s variable
并且它会隐藏值但我想要的是只显示最后一个 N(对于例如:4)这个变量的字符,即
如果我说 $ echo $mySecretVariable
(不确定我是否真的必须编写一个函数)那么它会将值回显为: ************5432
或者你的令牌键值最后 4 以 *******************C5fx
类似的结尾其中所有字符都将用 *
填充,并且只会显示最后一个 N。
您可以使用这个 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