问题描述
该笔记将记录:在 Bash 中,进行 urldecode 的方法,以及相关问题处理。
解决方案
这段代码从 Stack Overflow 复制而来
function urldecode() { : "${*//+/ }"; echo -e "${_//%/\\x}"; } function urldecode() { local i="${*//+/ }"; echo -e "${i//%/\\x}"; }
第一个写法太奇怪了,里面包含各种 Bash 知识:
1): 是为了防止 “${*//+/ }” 被当作命令来执行
2)$_ 表示前个命令的最后一个参数,也就是 “${*//+/ }” 的解析结果
3)$* 表示传入命令的全部参数
4)${p/+/ } 表示将变量 p 的 + 替换为空格,而 ${p//+/ } 表示将变量 p 的全部 + 替换为空格;
参考文献
bash – How to decode URL-encoded string in shell? – Stack Overflow