Bash

檢測到標誌時回顯消息

  • November 12, 2022

這適用於每 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

如果您使用單獨的語句來獲取目前時間戳、文件的時間戳和差異,而不是將它們打包到單個語句中,那麼您可以對消息執行許多其他操作(例如以秒為單位給出文件的年齡) . 但這會在腳本中增加更多行,而您可能不希望這樣。

引用自:https://unix.stackexchange.com/questions/724570