Bash,如果文件为空,请不要继续留下脚本

时间:2017-10-11 12:00:18

标签: linux bash shell sed

我的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文件)我想退出脚本,如果不是我想让脚本继续

我该怎么做?

2 个答案:

答案 0 :(得分:1)

grep放入if声明。

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

newfile可能为空,也可能不为空 - 您要附加一个可能非空的文件 - 但grep如果不是,则{0}}将具有非零退出状态向文件添加任何内容。

答案 1 :(得分:1)

您可以使用

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

或更短,语法不太明显

test -s "/file" && exit

test -s测试文件是否存在且大小非为零。第二种语法是利用,二元运算符只根据需要进行评估,因此test的正返回值会阻止exit运行,因为表达式无论如何都会为false。