我正在尝试执行以下操作:
obscure ( ) {
local txt="$1"
echo "$txt" | tr '[:alnum:]' '*'
}
Run Code Online (Sandbox Code Playgroud)
如果我这样做:
obscure 'mysecretstring'
Run Code Online (Sandbox Code Playgroud)
我明白了:
**************
Run Code Online (Sandbox Code Playgroud)
我可以使用什么匹配器tr,而不是[:alnum:]意味着"任何角色"?
有更好的实施方式obscure吗?想到的另一个选择是sed.
你可以使用纯BASH:
obscure() {
local txt="$1"
echo "${txt//?/*}"
}
Run Code Online (Sandbox Code Playgroud)
"${txt//?/*}"将替换$txtby中的每个字符*
测试一下:
obscure 'mysecretstring3123213213'
************************
obscure mysecretstring
**************
obscure '!@#$%^&*()_+=-'
**************
obscure '???'
***
Run Code Online (Sandbox Code Playgroud)