用bash替换字符串(%20,%5B,...)中的百分比转义字符

Dor*_*ian 6 string bash ascii utf-8

我有包含%转义字符的字符串,比如%20%5B,我想将它转换为"普通"字符,例如\for %20[for %5B.

我怎样才能做到这一点?

mar*_*rco 9

bash中的内置printf有一个特殊的格式说明符(即%b),它将\ x**转换为相应的值:

$ str='foo%20%5B12%5D'
$ printf "%b\n" "${str//%/\\x}"
foo [12]
Run Code Online (Sandbox Code Playgroud)