curl 命令似乎有問題,我不明白,似乎找不到正確的答案。我嘗試將 curl 命令輸出的特定部分(“位置”后面的 url)寫入變數,然后在另一個 curl 命令中使用該變數。我的變數名為 LINK。
LINK=$(curl -X GET 'https://address.net/wiki/download/attachments/2761195537/htdocs.zip?api=v2' --user myMail.com:6N6usevDb7qDthqrsxJeE655 -I | grep -m1 'location' | cut -f2- -d" ")
address.net是網站的占位符 urlmyMail.com是我的電子郵件的占位符6N6usevDb7qDthqrsxJeE655是我隨機更改以在此問題中顯示的身份驗證令牌。
如果我回顯變數,例如
echo $LINK
我得到正確的輸出:
https://address.net/file/5ad2b26e-9aa3-462d-980c-323adde372d5/binary?token=eyJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJkYzNiYTU5Ny01NDNkLTQ4Y2QtOTM1ZC00ZTYwNjkyMGJkYzAiLCJhY2Nlc3MiOnsidXJuOmZpbGVzdG9yZTpmaWxlOjVhZDJiMjZlLTlhYTMtNDYyZC05ODBjLTMyM2FkZGUzNzJkNSI6WyJyZWFkIl19LCJleHAiOjE2NjY5NTg3NDAsIm5iZiI6MTY2Njg3NTgyMH0.cYkWvyd358Z2IRUmNXOWWYAI_h-X0Xvm8vaNUT71Xho&client=dc3ba597-543d-48cd-935d-4e606920bdc0&name=htdocs.zip
但是,如果我嘗試在另一個 curl 命令中使用此變數(以下載名為 htdocs.zip),則 URL 將被切斷。命令:
echo curl -v "'$LINK'" --user myMail.com:6N6usevDb7qDthqrsxJeE655 --output htdocs.zip
讓我得到以下輸出:
curl -v 'https://address.net/file/5ad2b26e-9aa3-462d-980c-323adde372d5/binary?token=eyJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJkYzNiYTU5Ny01NDNkLTQ4Y2QtOTM1ZC00ZTYwNjkyMGJkYzAiLCJhY2Nlc3MiOnsidXJuOmZpbGVzdG9yZTpmaWxlOjVhZDJiMjZlLTlhYTMtNDYyZC05ODBjLTMyM2FkZGUzNzJkNSI6WyJyZWFkIl19LCJleHAiOjE2NjY5NjE3NzYsIm5iZiI6MTY2Njg3ODg1Nn0.BiUNe_QK0PVKduQZssr_sncY9KxfLKb3UkL0TxiIB_8&client=' --user myMail.com:6N6usevDb7qDthqrsxJeE655
請注意,在第二個 url 輸出的末尾,一些 url 丟失了,之前使用 echo $LINK 仍然存在。dc3ba597-543d-48cd-935d-4e606920bdc0&name=htdocs.zip
缺少部分
網址。如果我兩次使用相同的變數,我不明白為什么會這樣。
我還嘗試將變數寫入檔案。
curl -v https://address.nett/wiki/download/attachments/2761195537/htdocs.zip?api=v2 --user` `myMail.com:6N6usevDb7qDthqrsxJeE655 &>> MyText.txt`
grep -m1 location /home/user/Desktop/MyText.txt > /home/user/Desktop/MyTextA.txt
sed -i "s/< location: //g" MyTextA.txt
LINK=$(<MyTextA.txt)
仍然在上面的同一 curl 命令中使用此變數
curl -v "'$LINK'" --user myMail.com:6N6usevDb7qDthqrsxJeE655 --output htdocs.zip
缺少 LINK 變數中的部分 url。
uj5u.com熱心網友回復:
最好使用該-w/--write-out選項來獲取回應標頭:
curl -w '%header{location}\n' google.com -I
其他的事情,我猜這個-I選項會覆寫這個-X GET選項,所以你不能得到結果。
請注意,在第二個 url 輸出的末尾,一些 url 丟失了,之前使用 echo $LINK 仍然存在。缺少 dc3ba597-543d-48cd-935d-4e606920bdc0&name=htdocs.zip 部分。如果我兩次使用相同的變數,我不明白為什么會這樣。
此問題無法重現,請重新檢查您的腳本。
uj5u.com熱心網友回復:
我可以用 wget 命令解決這個問題。
wget $LINK -O htdocs.zip
curl 命令的變數 LINK 似乎有問題,但與 wget 一起作業得很好。使用set -x命令可以看到,變數內部有 ' 不應該存在。
- LINK='https://address.net/file/5ad2b26e-9aa3-462d-980c-323adde372d5/binary?token=eyJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJkYzNiYTU5Ny01NDNkLTQ4Y2QtOTM1ZC00ZTYwNjkyMGJkYzAiLCJhY2Nlc3MiOnsidXJuOmZpbGVzdG9yZTpmaWxlOjVhZDJiMjZlLTlhYTMtNDYyZC05ODBjLTMyM2FkZGUzNzJkNSI6WyJyZWFkIl19LCJleHAiOjE2NjczNzk3MDMsIm5iZiI6MTY2NzI5Njc4M30.o4wXDuamE2-5GNbF-i6tLWCu58WZzZ_iWW3YO40p4fU&client=dc3ba597-543d-48cd-935d-4e6'6920bdc0&name=htdocs 。壓縮
在鏈接末尾附近(靠近最后一個 -)應該有一個零而不是一個 ' 。這對于仍然會顯示正確鏈接的命令是可見的并且不可見echo LINK(沒有'并且最后一個'為零)。
uj5u.com熱心網友回復:
不要在 "'$LINK'" 中使用單引號。只需使用
$ curl -v $LINK --user myMail.com:6N6usevDb7qDthqrsxJeE655 --output htdocs.zip
或者
$ curl -v "$LINK" --user myMail.com:6N6usevDb7qDthqrsxJeE655 --output htdocs.zip
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/524554.html
