2017-07-30 112 views
0

我想檢查一個文件是否大於5分鐘,如果是這種情況,我想調用另一個發送郵件的shell腳本。Shellscript如果語句返回錯誤

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]:找不到

+2

在if條件中添加空格:'if [condition]',而不是'if [condition]'。 – SLePort

回答

1

試着這麼做:

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

這樣,「then」語句將始終執行......只是試過了。 – drifter213

+0

這只是一個提示。無論如何,查找程序是檢查這些條件的最佳方法。 – hedgar2017

+0

我看,語法也比較容易......謝謝! – drifter213

0

這工作:

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

Your script first c根據$((....))表達式計算一個數字。在你的情況下,這個數字似乎是1

這意味着你只剩下命令

if [1] = 1 

這意味着bash會發現一個名爲[1]命令,並使用兩個參數,=1調用它。

由於在PATH中找不到名爲[1]的可執行文件,因此bash會告訴您它找不到該文件。

我覺得

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

應該做的工作。