我正在整理一个简单的备份脚本,它将tar文件夹的内容,然后将该文件移动到备份服务器。该脚本确保tar文件存在,并且在移动之前不是零字节。
问题是脚本在其中一条IF线上死亡
if [ -f /www/archives/pdf/pdf_201207021048.tar && 11294720 -gt 0 ]; then
echo "tar file exists and is greater than 0 bytes."
else
echo "tar file does not exist or is zero bytes"
fi
控制台中的错误是:
./backup_pdf.sh: line 49: [: missing `]'
第49行是上面的if语句。
使用
成功验证脚本bash -n backup.sh
bash看到缺少']'的错误,但它通过了语法检查?
答案 0 :(得分:5)
&&运算符分隔命令,因此[
和]
不是必需的同一命令的一部分。使用两组括号和&&&他们之间,或使用-a
运算符。现在大多数人更喜欢第一种选择。