Como executar um script apenas uma única vez?

1

O script deve ser executado apenas uma vez, nunca. Eu pensei em criar um arquivo quando o script é executado pela primeira vez e se esse arquivo existir, o script não será executado novamente.

Qual é o melhor lugar, mais limpo, para iniciar automaticamente o script para que seja executado apenas uma vez?

    
por James Mitch 09.07.2012 / 20:38

1 resposta

2

Achei sua pergunta interessante, então tentei descobrir como fazer isso.

Pensei nisso: crie um script que possa ser excluído depois de ser executado. Desta forma, o roteiro poderia fazer o seu trabalho e então ... adeus!

Aqui está o código

#!/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
# https://sobrelinux.info/questions/106389/how-to-run-a-script-only-a-single-time-ever"${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

Salve este código de teste e torne-o executável para testá-lo.
Lembre-se que se elimina quando é executado, por isso não se esqueça de fazer um backup antes de o testar!

    
por Dariopnc 10.07.2012 / 23:49