Bash
2 個相同範圍的 Bash 大括號擴展
我想通過以下方式下載一堆編號的文本文件:
curl https://www.grc.com/sn/sn-{472..807}.txt > sn-{472..807}.txt
但這給了我:
bash:sn-{472..807}.txt:不明確的重定向
所以我最終做了一個:
for iEpisode in {472..807}; do curl https://www.grc.com/sn/sn-"$iEpisode.txt" > sn-"$iEpisode.txt"; if [[ $? -eq 1 ]]; then exit; fi; done
問題是:有沒有辦法做一個簡單
curl
的雙括號擴展?(因為它對我來說並不模棱兩可,而且我的 Google-fu 無處可尋) :/
這是模棱兩可的,因為您正在嘗試重定向到多個文件。你的外殼會選擇哪個?
一般來說,您將需要
for
循環,但使用 Curl 您可以使用curl --remote-name-all https://www.grc.com/sn/sn-{472..807}.txt
該選項就像
-O
(請參閱手冊頁),-O, –remote-name
將輸出寫入本地文件,其名稱與我們獲得的遠端文件類似。(僅使用遠端文件的文件部分,路徑被截斷。)
但它適用於每一個論點。
Curl 也理解 shell-like 範圍:
curl -O 'https://www.grc.com/sn/sn-[472-807].txt'