2017-10-13 83 views
0

我有一個變量中的URL,它是從另一個地方讀取的。該變量具有?&字符。如果我在單引號或雙引號之間輸入整個URL,它可以正常工作。但是如果我輸入變量,curl會抱怨這個URL有非法字符。我如何繞過這個?cURL:如何輸入具有特殊字符的變量的URL

PS:我也試圖與%3F%26更換?&,但沒有奏效。

實施例:

$ echo "$location" 
https://example.com/dothis?param1=something&param2=somethingelse 
$ curl "$location" -o /dev/null > /dev/null 
curl: (3) Illegal characters found in URL 
$ curl "https://example.com/dothis?param1=something&param2=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 
+0

這裏不能重現這一點。可能是因爲URL中有不可見的字符。也許,在重新定義你的'location'變量後再試一次。 –

+0

試試'echo「$ location」| LC_ALL = C cat -vet'來查看變量中是否有任何不可見的字符。請注意'-e'會使它在行尾添加一個「$」;除此之外的任何事情都是潛在的問題。 –

+0

這是正確的@GordonDavisson。 'cat -A'在'$'之前顯示'^ M'。萬分感謝。 –

回答

1

可能會有一些不可見的字符。所以請嘗試

printf '%s' "$location" | hexdump -C 
+0

你是那麼對。在hexdump中有一個由點表示的最終字符,這樣做是爲了比較工作。謝謝你,'curl「$ {location :: $ {#location} -1}」-o/dev/null' –