繁体   English   中英

Bash,如果文件为空,则离开脚本,如果不继续

[英]Bash, If file is empty leave script if not continue

我的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文件),我想退出脚本,否则,我希望脚本继续

我怎样才能做到这一点?

grep放在if语句中。

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

newfile可能为空,也可能不为空-您首先要附加一个非空文件-但是grep如果未向文件中添加任何内容,则其退出状态为非零。

您可以使用

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

或更短,语法不太明显

test -s "/file" && exit

test -s测试文件是否存在并且大小不为零。 第二种语法被利用,即二进制运算符只求所需的值,因此正test返回的值将阻止exit运行,因为无论如何该表达式都是假的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM