Как запустить скрипт только один раз?

Сценарий должен запускаться только один раз. Я хочу создать файл, когда скрипт запускается в первый раз, и если этот файл существует, скрипт не запустится снова.

Какое самое лучшее, самое чистое место для автоматического запуска сценария, чтобы он запускался только один раз?

1
задан 9 July 2012 в 22:38

1 ответ

Я нашел Ваш вопрос интересным, таким образом, я пытался выяснить, как сделать это.

Я думал это: создайте сценарий, который мог удалить себя, будучи выполненным. Таким образом, сценарий мог сделать свое задание и затем... до свидания!

Вот код

#!/bin/bash


# Test script based on informations found on 
# http://stackoverflow.com/questions/59895/can-a-bash-script-tell-what-directory-its-stored-in
# trying to understand if it's possibile to achieve what asked on
# http://askubuntu.com/questions/161682/how-to-run-a-script-only-a-single-time-ever

# Let's try to find in which directory the script is
# It should account for spaces, link, etc.
SOURCE="${BASH_SOURCE[0]}"
DIR="$( dirname "$SOURCE" )"
while [ -h "$SOURCE" ]
do 
  SOURCE="$(readlink "$SOURCE")"
  [[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE"
  DIR="$( cd -P "$( dirname "$SOURCE"  )" && pwd )"
done
DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"

# We know the name of the script from 'basename $0'
NAME=`basename $0`

# Merge them to have the full path to the script
FULL_PATH=$DIR/$NAME
echo $FULL_PATH

# Let's be a bit theatrical
echo "This script will self destruct in"
for ((i=5;i>0;i--))
do
    echo $i
    sleep 1
done

# Goodbye!
rm $FULL_PATH

Сохраните этот тестовый код и сделайте его исполняемым файлом для тестирования его.
Помните, что это удаляет себя, когда это выполняется, так не забывайте иметь резервное копирование прежде, чем протестировать его!

2
ответ дан 9 July 2012 в 22:38

Другие вопросы по тегам:

Похожие вопросы: