「Bash」- urldecode @20210509

问题描述

该笔记将记录:在 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 的全部 + 替换为空格;

相关文章

「Sehll」- 重复字符串
「Shell」- 在脚本中,获取脚本所在路径
「Shell」- 从数组中,随机选择元素
「Shell」- 在使用 Sudo 命令时,向文件中插入内容
「Shell」- 获取某个目录下的Git仓库

参考文献

bash - How to decode URL-encoded string in shell? - Stack Overflow


posted @ 2021-05-09 16:50  研究林纳斯写的  阅读(92)  评论(0编辑  收藏  举报