これはSeamonkeyを24時間ごとに1回だけ実行するのに適しています。
フラグが検出されたら、メッセージを表示したいと思います。
echoのドアをどこに置くべきかわかりません。
#!/bin/bash
#
# Run this script only once a day
# Delay is necessary
# Creates this file /var/tmp/SeaAfter5.sh.flag
flag="/var/tmp/$(basename -- $0).flag"
min_age=$(( 60 * 60 * 24 )) # 24 hours
if [ -e "$flag" ] ;then
(( $(date +%s) - $(date +%s -r "$flag") > min_age )) || exit 1
fi
touch "$flag"
# Proceed with starting Seamonkey
sleep 5 && seamonkey
icarusが公開したいくつかのコードを修正しました。実行時にフラグファイルは表示されず、Seamonkeyは実行されません。
if [ -e "$flag" ] ;then
if (( $(date +%s) - $(date +%s -r "$flag") > min_age ));then
echo "Seamonkey starting in 5 seconds."
# Proceed with starting Seamonkey
sleep 5 && seamonkey
else
echo "Seamonkey has already been run today."
exit 1
fi
else
echo "No flag file detected"
fi
答え1
あなたのコードは次のとおりです
if [ -e "$flag" ] ;then
(( $(date +%s) - $(date +%s -r "$flag") > min_age )) || exit 1
fi
中間線を3行に変換します。
if [ -e "$flag" ] ;then
(( $(date +%s) - $(date +%s -r "$flag") > min_age )) || {
echo "Flag file \"$flag\" is not old enough to invoke seamonkey yet"
exit 1
}
fi
別のステートメントを使用して現在のタイムスタンプ、ファイルのタイムスタンプ、および相違を取得する場合は、単一のステートメントに圧縮するのではなく、そのメッセージで他の多くの操作を実行できます(例:ファイルの寿命を秒単位で提供) 。ただし、これによりスクリプトに不要な行が増えます。
答え2
正確に何を求めるのかよくわかりません。これにより、自分の質問に答えることができることを願っています。あなたは変わらなければなりません
if [ -e "$flag" ] ;then
(( $(date +%s) - $(date +%s -r "$flag") > min_age )) || exit 1
fi
似たようなもの
if [ -e "$flag" ] ;then
if (( $(date +%s) - $(date +%s -r "$flag") > min_age ));then
echo "We need to run seamonkey"
else
echo "No need to run seamonkey"
exit 1
fi
else
echo "No flag file detected"
fi