可以在 shell 脚本中对变量进行 urlencode 吗?
Possible to urlencode a variable in a shell script?
是否可以在 shell 脚本中 url 编码变量?
#!/bin/bash
now=$(date +"%T")
DATA=$(wget -q -O - "http://someurl.com/x.htm?callback=webRequest&exthrs=1&extMode=&fund=1&entitlement=0&skipcache=&extendedMask=1&partnerId=2&output=json&noform=1")
wget -q -O - "http://somewhere.com?abc=&responseData=$DATA"
echo "-----COMPLETE----- $now $RANDOM
"
我想 url 编码 DATA 变量,因为它的结果中有 &,它弄乱了第二个 wget 中的参数,有没有办法 url 编码那个 DATA 变量不使用 PHP 到 url 编码?
这是 URL 编码 shell 字符串的一种方法 DATA
:
DATA=$(python -c "import urllib, sys; print urllib.quote(sys.argv[1])" "$DATA")
这是另一个:
DATA=$(perl -MURI::Escape -e 'print uri_escape($ARGV[0]);' "$DATA")
顺便说一下,Python3 中的方法是这样的:
DATA=$(python3 -c "import urllib.parse, sys; print(urllib.parse.quote(sys.argv[1]))" "$DATA")
是否可以在 shell 脚本中 url 编码变量?
#!/bin/bash
now=$(date +"%T")
DATA=$(wget -q -O - "http://someurl.com/x.htm?callback=webRequest&exthrs=1&extMode=&fund=1&entitlement=0&skipcache=&extendedMask=1&partnerId=2&output=json&noform=1")
wget -q -O - "http://somewhere.com?abc=&responseData=$DATA"
echo "-----COMPLETE----- $now $RANDOM
"
我想 url 编码 DATA 变量,因为它的结果中有 &,它弄乱了第二个 wget 中的参数,有没有办法 url 编码那个 DATA 变量不使用 PHP 到 url 编码?
这是 URL 编码 shell 字符串的一种方法 DATA
:
DATA=$(python -c "import urllib, sys; print urllib.quote(sys.argv[1])" "$DATA")
这是另一个:
DATA=$(perl -MURI::Escape -e 'print uri_escape($ARGV[0]);' "$DATA")
顺便说一下,Python3 中的方法是这样的:
DATA=$(python3 -c "import urllib.parse, sys; print(urllib.parse.quote(sys.argv[1]))" "$DATA")