我想檢查一個文件是否大於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]:找不到
我想檢查一個文件是否大於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]:找不到
試着這麼做:
if find /home/ftp/test.txt -mmin +5 &>/dev/null; then
<your code>
fi
這樣,「then」語句將始終執行......只是試過了。 – drifter213
這只是一個提示。無論如何,查找程序是檢查這些條件的最佳方法。 – hedgar2017
我看,語法也比較容易......謝謝! – drifter213
這工作:
if test "`find /home/ftp/test.txt -mmin +5`"; then
echo "file found"
fi
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
....
應該做的工作。
在if條件中添加空格:'if [condition]',而不是'if [condition]'。 – SLePort