หากต้องการยกเลิกและออกจากสคริปต์ทันทีหากการดำเนินการครั้งล่าสุดยังไม่ได้ระบุไว้อย่างน้อยในเวลาที่ผ่านมาคุณสามารถใช้วิธีนี้ซึ่งต้องใช้ไฟล์ภายนอกที่เก็บวันที่และเวลาดำเนินการล่าสุด
เพิ่มบรรทัดเหล่านี้ไปที่ด้านบนของ Bash script ของคุณ:
#!/bin/bash
# File that stores the last execution date in plain text:
datefile=/path/to/your/datefile
# Minimum delay between two script executions, in seconds.
seconds=$((60*60*24*3))
# Test if datefile exists and compare the difference between the stored date
# and now with the given minimum delay in seconds.
# Exit with error code 1 if the minimum delay is not exceeded yet.
if test -f "$datefile" ; then
if test "$(($(date "+%s")-$(date -f "$datefile" "+%s")))" -lt "$seconds" ; then
echo "This script may not yet be started again."
exit 1
fi
fi
# Store the current date and time in datefile
date -R > "$datefile"
# Insert your normal script here:
อย่าลืมตั้งค่าที่มีความหมายdatefile=
และปรับค่าตามseconds=
ความต้องการของคุณ ( $((60*60*24*3))
ประเมินเป็น 3 วัน)
หากคุณไม่ต้องการไฟล์แยกคุณสามารถเก็บเวลาดำเนินการล่าสุดในการประทับเวลาการแก้ไขของสคริปต์ของคุณ อย่างไรก็ตามนั่นหมายความว่าการเปลี่ยนแปลงใด ๆ กับไฟล์สคริปต์ของคุณจะรีเซ็ตตัวนับ 3 และถือว่าเหมือนว่าสคริปต์นั้นทำงานได้สำเร็จ
ในการนำไปใช้นั้นเพิ่มตัวอย่างด้านล่างไปยังด้านบนของไฟล์สคริปต์ของคุณ:
#!/bin/bash
# Minimum delay between two script executions, in seconds.
seconds=$((60*60*24*3))
# Compare the difference between this script's modification time stamp
# and the current date with the given minimum delay in seconds.
# Exit with error code 1 if the minimum delay is not exceeded yet.
if test "$(($(date "+%s")-$(date -r "$0" "+%s")))" -lt "$seconds" ; then
echo "This script may not yet be started again."
exit 1
fi
# Store the current date as modification time stamp of this script file
touch -m -- "$0"
# Insert your normal script here:
อย่าลืมปรับค่าseconds=
ความต้องการของคุณ ( $((60*60*24*3))
ประเมินเป็น 3 วัน)
*/3
ไม่ทำงานอย่างไร "ถ้า 3 วันยังไม่ผ่าน": สามวันนับจากนี้? กรุณาแก้ไขคำถามของคุณและชี้แจง