cURL:如何输入具有特殊字符的变量的URL
问题描述:
我有一个变量中的URL,它是从另一个地方读取的。该变量具有?
和&
字符。如果我在单引号或双引号之间输入整个URL,它可以正常工作。但是如果我输入变量,curl会抱怨这个URL有非法字符。我如何绕过这个?cURL:如何输入具有特殊字符的变量的URL
PS:我也试图与%3F
和%26
更换?
和&
,但没有奏效。
实施例:
$ echo "$location"
https://example.com/dothis?param1=something¶m2=somethingelse
$ curl "$location" -o /dev/null > /dev/null
curl: (3) Illegal characters found in URL
$ curl "https://example.com/dothis?param1=something¶m2=somethingelse" -o /dev/null > /dev/null
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 126k 0 126k 0 0 13974 0 --:--:-- 0:00:09 --:--:-- 32272
答
可能会有一些不可见的字符。所以请尝试
printf '%s' "$location" | hexdump -C
+0
你是那么对。在hexdump中有一个由点表示的最终字符,这样做是为了比较工作。谢谢你,'curl“$ {location :: $ {#location} -1}”-o/dev/null' –
这里不能重现这一点。可能是因为URL中有不可见的字符。也许,在重新定义你的'location'变量后再试一次。 –
试试'echo“$ location”| LC_ALL = C cat -vet'来查看变量中是否有任何不可见的字符。请注意'-e'会使它在行尾添加一个“$”;除此之外的任何事情都是潜在的问题。 –
这是正确的@GordonDavisson。 'cat -A'在'$'之前显示'^ M'。万分感谢。 –