我想对基于shell脚本的字符串进行编码。 我已经从网上下载了一个脚本。 它是:为什么在这个shell脚本中黑体不是URL编码?
#!/bin/sh
url_encoder()
{
echo -n "$1" | awk -v ORS="" '{ gsub(/./,"&\n") ; print }' | while read l;
do
case "$l" in
[-_.~/a-zA-Z0-9]) echo -n ${l} ;;
"") echo -n %20 ;;
*) printf '%%%02X' "'$l"
esac
done
}
echo ""
}
上述码的基本思想是 (1)转换输入串入行,每一行有一个字符 (2)对于每一行,URL编码字符
所以如果我运行
$url_encoder "abc:"
输出将是 “ABC%3A”,这是正确的
但是,如果我跑
$url_encoder "\\" # I want to encode the backslash, so I use 2 "\" here
根本没有输出。
你知道原因吗?
谁在使用'url_encoder'的输出?像'curl'或'wget'这样的东西应该有必要的方式来编码它的输入。 – chepner
url_encoder的输出应该按照要求先散列。 – AllenHu