1
everyone。 我需要編寫一個腳本這需要一個參數test.xxx從標準就像這樣:如何在shell腳本中對從標準輸入(stdin)讀取的壓縮文件進行解壓縮
./script < test.xxx
test.xxx由gzip命令壓縮,我想用gunzip和pax擴展歸檔到一個目錄。劇本是這樣的:
#!/bin/sh
while read line; do #here try to catch input file
echo $line >> /tmp/tmpfile
done
gunzip < /tmp/tmpfile | pax -r /tmp
...
這種閱讀形式似乎只對常規文件,而不是壓縮文件的工作,我不知道如何存儲從標準輸入讀取,從而壓縮文件 - >
我可以執行「gunzip </tmp/tmpfile | pax -r/tmp」並將文件展開到/ tmp。
謝謝你!它的工作原理〜 – Alex
但是,如果我寫「compress_script/tmp/output」,compress_script將從stdin獲取文件並輸出到stdout。 shell會拋出「zcat:未知壓縮格式」。你知道如何解決它嗎? –
Alex
關於這個錯誤:你確定你的文件是一個gzip壓縮文件嗎?或者它是純文本? (如果是純文本,'zcat'會窒息。)或者它完全是其他類型的文件? ('file'命令可以幫助你 - 運行'man file'獲取更多信息。)或者文件損壞了? (在你的原始腳本中,你正在使用shell'read'內建的「逐行」讀取一個像文本文件一樣的二進制壓縮文件 - 一個主要的no-no!) – pobrelkey