Shellscript If语句返回错误

时间:2017-07-30 13:43:16

标签: linux bash shell ubuntu

我正在尝试检查文件是否超过5分钟,如果是这种情况,我想调用另一个发送邮件的shell脚本。

check_file.sh:

#!/bin/sh

if [$(( (`date +%s` - `stat -L --format %Y /home/ftp/test.txt`) > (5*60) ))] = 1
        then sh ./testmail.sh
fi

错误输出:3:./ check_file.sh:[1]:未找到

3 个答案:

答案 0 :(得分:1)

尝试类似:

if find /home/ftp/test.txt -mmin +5 &>/dev/null; then
    <your code>
fi

答案 1 :(得分:1)

这有效:

if test "`find /home/ftp/test.txt -mmin +5`"; then
        echo "file found"
fi

答案 2 :(得分:1)

您的脚本首先根据$((....))表达式计算一个数字。在您的情况下,此数字似乎为1

这意味着你留下了命令

if [1] = 1

这意味着bash尝试查找名为[1]的命令,并使用两个参数=1调用它。

由于在PATH中找不到名为[1]的可执行文件,bash会告诉您它无法找到该文件。

我认为

if (( (`date +%s` - `stat -L --format %Y /home/ftp/test.txt`) == 1 ))
then 
    ....

应该做的。