2017-10-11 56 views
0

的第一個命令在我的bash腳本是錯誤的現有文件的grep。 EX:猛砸,如果文件是空的離開腳本,如果不繼續

cat /usr/local/avamar/var/ddrmaintlogs/ddrmaint.log | grep "hfscheck-finish Backup directory missing for backup" > PartialBackups 
cat PartialBackups | sed -n -e 's#^.*cur/ ##p' >P2           
cat P2 | sed 's#/#//#g' > P3                
cat P3 | awk {'print $1'} >> S1                
cat P3 | awk {'print $3'} >> S2 

如果newfile中爲空(PartialBackups文件)我要退出腳本,如果不是我希望腳本繼續

我該怎麼辦呢?

+0

你的做法是錯誤的,整個你貼應該是AWK單個呼叫腳本。如果你[編輯]你的問題,包括簡潔,可測試的樣本輸入和預期的輸出,並用awk標記,那麼我們可以幫助你。此外,你在哪裏得到的想法,**腳本分隔符**('「')應該去** **裏面的腳本'{」打印$ 1「}',而不是它周圍的'」 {打印$ 1}'' ?我見過幾個人這樣做,我只是好奇這個想法是從哪裏來的。 –

回答

1

grepif聲明。

if ! grep -err /file >> newfile; then 
    exit 
fi 

newfile可能會或可能不會是空的 - 要附加到一個可能的非空文件開始 - 但grep將有一個非零退出狀態,如果它不添加什麼到文件。

+0

我會將'>> newFile'直接附加到'grep'命令;否則,這看起來像是最好的答案。 –

+0

現在我想弄清楚爲什麼我認爲它需要的是在'if'聲明。 – chepner

0

文件是否存在,並具有非零大小,您可以使用

if ! [ -s "/file" ];then 
    exit 
fi 

或更短與不太明顯的語法

test -s "/file" && exit 

test -s測試。第二個語法是利用,即二元操作僅評估多達需要,所以從test正回報值可以防止exit的運行,作爲表達將是假的反正。