![](/img/trans.png)
[英]Running tar in a bash script returns “Output with bankrupt according to previous errors”
[英]tar returns 1 in script, but not interactively
如果我運行以下shell腳本(即tar文件,如果成功則刪除源代碼)
#!/bin/bash
tar cvf /home/acampton/vortex_data/2014-02-14/tmp-2014-02-14-test2.tar -C /home/acampton/vortex_data/2014-02-14 SIC_17_RADAR-2014-02-14_all_no_dups.csv
if [ $? -ne 0 ]; then
then
echo "Deleting files - tar successful ($?) at time "`date`
else
echo "Not Deleting files - tar unsuccessful ($?) at time "`date`
fi
它返回1(=歸檔時更改的源文件)
acampton@ALIEN:~/work/spm$ ./v1.sh
SIC_17_RADAR-2014-02-14_all_no_dups.csv
Not Deleting files - tar unsuccessful (1) at time Tue Feb 18 10:38:16 EST 2014
但如果我以交互方式運行它,它會起作用(每次!)
acampton@ALIEN:~/work/spm$ tar cvf /home/acampton/vortex_data/2014-02-14/tmp-2014-02-14-test2.tar -C /home/acampton/vortex_data/2014-02-14 SIC_17_RADAR-2014-02-14_all_no_dups.csv
SIC_17_RADAR-2014-02-14_all_no_dups.csv
acampton@ALIEN:~/work/spm$ echo $?
0
acampton@ALIEN:~/work/spm$
我可以保證在運行腳本時(或交互式)不修改源代碼
我也試過使用--exclude = everything_else_but_my_file並得到同樣的東西
注意我不是要試圖盯住。 (通常會在“我們讀取它時更改文件”導致其嘗試將其自己的.tar文件設置為tar)
在我的繩子盡頭 - 看着焦油的替代品,但需要知道為什么會這樣,所以我可以在晚上睡覺
有任何想法嗎 ?
if
條件是倒退的。 0表示成功,非零表示失敗。 使用-eq
而不是-ne
。 你也已經得到了一個額外的then
在那里。
if [ $? -eq 0 ]; then
echo "Deleting files - tar successful ($?) at time "`date`
else
echo "Not Deleting files - tar unsuccessful ($?) at time "`date`
fi
實際上,測試命令是否成功的慣用方法是將其放在if
語句中。
if tar cvf /home/acampton/vortex_data/2014-02-14/tmp-2014-02-14-test2.tar -C /home/acampton/vortex_data/2014-02-14 SIC_17_RADAR-2014-02-14_all_no_dups.csv; then
echo "Deleting files - tar successful ($?) at time $(date)"
else
echo "Not Deleting files - tar unsuccessful ($?) at time $(date)"
fi
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.