2016-10-14 1 views
1

Ich versuche, das zu tun, folgende:Obscure Zeichenfolge in Bash-Skript

obscure () { 
    local txt="$1" 
    echo "$txt" | tr '[:alnum:]' '*' 
} 

Also, wenn ich tun:

obscure 'mysecretstring' 

ich:

************** 

Was Matcher kann ich Verwenden Sie für tr anstelle von [:alnum:], um irgendein Zeichen zu bedeuten?

Gibt es eine bessere Möglichkeit obscure zu implementieren? Eine andere Option, die in den Sinn kommt, ist sed.

+0

Wenn Sie _any druckbare character_ bedeuten wollen, könnten Sie Verwende '[: print:]'. –

Antwort

7

können Sie reinen BASH verwenden:

obscure() { 
    local txt="$1" 
    echo "${txt//?/*}" 
} 

"${txt//?/*}" wird jedes Zeichen in $txt von *

-Test ersetzen:

obscure 'mysecretstring3123213213' 
************************ 

obscure mysecretstring 
************** 

obscure '[email protected]#$%^&*()_+=-' 
************** 

obscure '中文版' 
*** 
+1

Funktioniert wie ein Charme. Vielen Dank! – dangonfast

+1

Sie brauchen nicht einmal die lokale Variable: 'echo" $ {1 //?/*} "' Funktioniert auch. – chepner

+0

Ja das ist wahr lokale Variable wird nicht benötigt. Selbst für 'tr' wurde es nicht benötigt. – anubhava

Verwandte Themen