이는 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