Shell-Script
如何通過 tar 管道傳輸使用 wget 下載的文件?
我想通過管道傳輸 tarball(
.tar.gz
在這種情況下為文件)我使用 GNU Wget (wget
)下載tar -xzf
(解壓縮它們,如果不清楚的話),但我不知道如何。我試過了:wget -q -O- ${SRC_URI} | tar -xzf > ${DESTDIR}
和
wget -q -O- ${SRC_URI} | `tar -xzf` > ${DESTDIR}
和
wget -q -O- ${SRC_URI} | 'tar -xzf' > ${DESTDIR}
甚至沒有人接近做我想做的事。我還嘗試省略輸出組件
> ${DESTDIR}
,讓 tar 以預設方式提取 tarball 的內容。每次嘗試通常都會返回一個錯誤,例如:tar: option requires an argument -- 'f'
在它下載 tarball 之前,或者什麼都沒有,然後我會檢查是否
${DESTDIR}
已經創建了設置的路徑(因為我要離開 tar 來生成它)並且它沒有。
當您從標準輸入中提取 tar.gz 文件時,您無需指定
f
選項,tar
預設為從標準輸入中讀取。假設您要將內容提取到 $DESTDIR,您還需要使用 GNU
tar
的-C
(更改目錄)選項。我還在
"
變數周圍加上引號,以防萬一 $ SRC_URI or $ DESTDIR 包含任何空格或 shell 元字元 -&
、*
等?
。最後,
{}
變數周圍的花括號在這裡並不是絕對必要的,但我還是把它們留在了原處——它們當然不會造成任何傷害。把所有這些放在一起,你會得到:
wget -q -O- "${SRC_URI}" | tar -xz -C "${DESTDIR}"