我有一個簡單的問題。我希望這個腳本會說如果tar裏面有一個文件「echo tar successful!」否則「回聲沒有任何文件」。使用tar的Linux和其他文件是否有文件
這是我的腳本:
stat -c"%z;%n" * | grep '^2013-12-04' | awk -F';' '{ print $2 }' | xargs tar -zcvf file.tar.gz
if[]??
我有一個簡單的問題。我希望這個腳本會說如果tar裏面有一個文件「echo tar successful!」否則「回聲沒有任何文件」。使用tar的Linux和其他文件是否有文件
這是我的腳本:
stat -c"%z;%n" * | grep '^2013-12-04' | awk -F';' '{ print $2 }' | xargs tar -zcvf file.tar.gz
if[]??
試試這個
如果它是成功
回聲$?將返回0
否則它將返回非零值。
其他選項是tar -tvf,它將測試存檔。基於tar -tvf的返回值。你可以檢查你的文件列表。但如果它是一個巨大的文件,你可能需要使用head -n來檢查前幾個文件。
這是一個很好的參考 http://unixhelp.ed.ac.uk/scrpt/scrpt2.2.2.html 〔實施例
您可以添加這樣的事情你的bash腳本。 (只是硬編碼的tar文件)
焦油-xvf test.tar>的/ dev/null的
如果[ 「$?」 -eq 0]
然後
回聲 「成功」
其他
回聲 「錯誤」
網絡
希望這有助於
Tharanga Abeyseela
function test_tar {
if [[ $(tar -ztvf $1 | wc -l) != 0 ]]; then echo 'tar successful!'; else echo "don't have any files"; fi
}
$ test_tar non_empty_tar
tar successful!
$ test_tar empty_tar
don't have any files
我覺得你的腳本有問題。
stat -c "%z;%n" * | grep '^2013-12-04' | awk -F';' '{print $2}' | xargs tar -zcvf file.tar.gz
if [[ $(zcat file.tar.gz | tar -tf - | wc -l) != 0 ]]; then
echo 'tar successful!'
else
echo "don't have any files"
fi