我想檢查遠程網站上的一些檔案。
這是生成計算檔案 md5 的命令的 bash 命令
[root]# head -n 3 zrcpathAll | awk '{print $3}' | xargs -I {} echo wget -q -O - -i {}e \| md5sum\;
wget -q -O - -i https://example.com/zrc/3d2f0e76e04444f4ec456ef9f11289ec.zrce | md5sum;
wget -q -O - -i https://example.com/zrc/e1bd7171263adb95fb6f732864ceb556.zrce | md5sum;
wget -q -O - -i https://example.com/zrc/5300b80d194f677226c4dc6e17ba3b85.zrce | md5sum;
然后我將輸出的命令通過管道傳輸到 bash,但只執行了第一個命令。
[root]# head -n 3 zrcpathAll | awk '{print $3}' | xargs -I {} echo wget -q -O - -i {}e \| md5sum\; | bash -v
wget -q -O - -i https://example.com/zrc/3d2f0e76e04444f4ec456ef9f11289ec.zrce | md5sum;
3d2f0e76e04444f4ec456ef9f11289ec -
[root]#
uj5u.com熱心網友回復:
請您嘗試以下方法:
while read -r _ _ url _; do
wget -q -O - "$url"e | md5sum
done < <(head -n 3 zrcpathAll)
我們不應該把-i這里的“$url”放在前面。
[關于 -i 選項的說明]
的手冊頁wget說:
-i file
--input-file=file
從本地或外部檔案讀取 URL。[snip]
如果使用此函式,則命令列中不需要出現 URL。[snip]
如果檔案是外部檔案,如果 Content-Type 匹配 text/html,檔案將自動被視為 html。此外,如果未指定檔案的位置,則將隱式用作基本 href。
其中file將包含 url 行,例如:
https://example.com/zrc/3d2f0e76e04444f4ec456ef9f11289ec.zrce
https://example.com/zrc/e1bd7171263adb95fb6f732864ceb556.zrce
https://example.com/zrc/5300b80d194f677226c4dc6e17ba3b85.zrce
而如果我們使用選項 as -i url,wget首先下載urlas 一個包含上述 url 行的檔案。在我們的例子中,url是下載自身的目標,而不是 url 串列,wget會導致錯誤:No URLs found in url.
即使wget失敗,為什么命令只輸出一行,而不是三行md5sum?這似乎是因為head當管道子行程失敗時,該命令會立即重繪 剩余的行。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/440889.html
上一篇:使用shell腳本運行openshift命令后如何獲取特定列值的值?
下一篇:使用管道跨子行程通信
