Bash脚本通过语法检查,但错误消失']'

a c*_*der 0 bash if-statement

我正在整理一个简单的备份脚本,它将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
Run Code Online (Sandbox Code Playgroud)

控制台中的错误是:

./backup_pdf.sh: line 49: [: missing `]'
Run Code Online (Sandbox Code Playgroud)

第49行是上面的if语句.

该脚本已成功验证

bash -n backup.sh
Run Code Online (Sandbox Code Playgroud)

bash看到丢失的']'有什么不对,但是它通过了语法检查?

Ala*_*rry 5

&&运算符分隔命令,因此您[和您]不是必需的同一命令的一部分.要么使用两组括号,并在它们之间加上&&,要么使用-a运算符.如今,大多数人更喜欢第一种选择.

  • 或者使用`[[`而不是旧的Bourne shell语法 (3认同)