플래그가 감지되면 에코 메시지

플래그가 감지되면 에코 메시지

이는 Seamonkey를 24시간마다 한 번씩만 실행하는 데 적합합니다.

플래그가 감지되면 메시지를 표시하고 싶습니다.

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

중간 선을 세 줄로 변환하겠습니다.

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

관련 정보