如何对bash中的所有字符特殊字符和非特殊字符进行url编码

问题描述

如何对bash中的所有字符进行网址编码?

例如: abcd0123 => %61%62%63%64%30%31%32%33

我尝试了Linux中的内置urlencode函数,但它仅编码(。?)之类的特殊字符

解决方法

我不认为这在纯Bash中是可行的,但是可以将其他shell实用程序捆绑在一起以实现此结果,例如

urlencode() {
    printf %s "$1" | od -An -tx1 -v -w${#1} | tr ' ' %
}
urlencode abcd0123 # => %61%62%63%64%30%31%32%33