Shell-Script
檢查文件是否為存檔;如果是,提取
如何檢查文件是否為存檔,然後使用 提取它
7z
?我知道我可以通過file
命令檢查它,但由於它的輸出,它在腳本中不起作用。我無法預測它可能是什麼類型的存檔。我只想做類似的事情:7z可以解壓嗎?
如果是,提取,
如果不是,進一步
通過 bash 腳本。
如果它執行的操作失敗,該
7z
實用程序將返回一個非零退出程式碼。您可以使用此事實來嘗試提取存檔,然後在失敗時執行其他操作:if ! 7z e filename 2>/dev/null; then # do something else fi
或者,取決於您還想做什麼,或者不做什麼,
if 7z e filename 2>/dev/null; then exit fi # do something else
可以縮短為
7z e filename 2>/dev/null && exit # do something else
你顯然可以把它包起來
if 7z t filename; then fi
並擷取提取失敗(由於磁碟空間不足或提取期間可能發生的任何其他錯誤)與確定這確實是
7z
檔案的失敗分開。完整的程式碼可能看起來像
if 7z t filename 2>/dev/null; then if 7z e filename 2>/dev/null; then echo 'All is good, archive extracted' >&2 else echo 'Archive failed to extract' >&2 fi else echo '7z failed to process the file' >&2 fi
filename=/tmp/foo.gz if 7z t $filename; then 7z e $filename else echo $filename not an archive. fi