2016-08-12 13 views
0

毎日06:00 AMに実行されるbashスクリプトを作成して、05:00 AM - 06:00 AMの間にファイルが変更されたかどうかを確認しました。ファイルが変更されたかどうかを確認する

私たちのサーバーは毎日午前5時にこのファイルupload.xmlを自動的にアップロードし、古いものを置き換えるため、このファイルがアップロードされたかどうかをチェックするbashスクリプトを作成しました。

私のbashスクリプトがうまく動かない。 Everydayはbashスクリプトからこのファイルがアップロードまたは変更されていないことを通知する電子メールを送信し、そのファイルが新しい変更時刻で既にアップロードされていることを確認します。

私のコードで何が間違っていますか。

ここは私のbashスクリプトコードです。代わりに、レガシーbackticks

[[ -z `find /home/USER/public_html/upload.xml -mmin -60` ]] 

if [ $? -eq 0 ] 
then 
    mail -s "File has not been changed" [email protected] 
else 
    echo -e "file has been changed" 
fi 

答えて

0

使用$()

var="$(find /home/USER/public_html/ -type f -mmin -60 -name "upload.xml")" 
if [ -z "$var" ] #checking if a SET variable is empty 
then 
    mail -s "File has not been changed" [email protected] 
else 
    echo -e "file has been changed" 
fi 

ノートでは、あなたが最初のパスを指定-name

  • ダブル引用変数を使用してファイルをフィルタリング見つけ

    • は、ここに問題はありません。
  • +0

    ありがとうございました。 Nawあなたのコードに置き換えました。このスクリプトは60分前にファイルが変更されたかどうかを確認します。 – Alex

    +0

    @Alex Imho -60は最後の60分以内に解釈され、+60は最後の60分以内に解釈されるべきである – sjsam

    関連する問題