Bash
檢測到標誌時回顯消息
這適用於每 24 小時僅執行一次 Seamonkey。
如果檢測到標誌,我想顯示一條消息。
我不確定在哪裡放置那個 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
你的程式碼是:
if [ -e "$flag" ] ;then (( $(date +%s) - $(date +%s -r "$flag") > min_age )) || exit 1 fi
我會將中間線轉換為三個:
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
如果您使用單獨的語句來獲取目前時間戳、文件的時間戳和差異,而不是將它們打包到單個語句中,那麼您可以對消息執行許多其他操作(例如以秒為單位給出文件的年齡) . 但這會在腳本中增加更多行,而您可能不希望這樣。