arquivo de exportação de script de shell

0

Tenho saída que preciso exportar para um arquivo. Então eu preciso chamar esse arquivo para executar o script nele. Outra condição seria executar a última consulta ou instrução após 15 minutos. Veja o código abaixo:

#SORT RESULT IN DESCENDING ORDER. 
#FORMAT SYNTAX FOR BACKUP DELETION
sort -r ${TEMPRESULT2} | sed -e "s/^/DELETE BACKUP /g" | sed -e "s/$/ NOWARNING/g"

saída:

DELETE BACKUP (backupid) NOWARNING

DELETE BACKUP (backupid) NOWARNING
DELETE BACKUP (finalbackupid) NOWARNING

o ID final do backup só pode ser executado quando todos os outros backups forem feitos

    
por willow 05.06.2015 / 11:40

2 respostas

2

Você tem duas sequências diferentes de comando para serem executadas em dois momentos diferentes. A solução mais lógica, portanto, seria colocar esses comandos em dois arquivos diferentes:

TEMPRESULT3=$(sort -r ${TEMPRESULT2} | sed -e "s/^/DELETE BACKUP /g" | sed -e "s/$/ NOWARNING/g")

# Put all lines except the last one in a first script:
echo "$TEMPRESULT3" | head -n -1 >"path/to/first-script"

# Put the last line in a second script:
echo "$TEMPRESULT3" | tail -n 1 >"path/to/second-script"

Tanto quanto eu sei número de linha negativo é uma extensão de GNU head , se não estiver disponível, você deve calcular o número de linhas antes de executá-lo ( total=$(echo "$TEMPRESULT3" | wc -l); all_but_least=$(expr $total - 1) , então $all_but_least ca ser passado como parâmetro para o primeiro comando head em vez de -1 ).

Depois disso, tudo o que você precisa fazer é chamar esses scripts da maneira que quiser. Por exemplo, se eu pegar a sintaxe mysql proposta por Benjamin B., seria:

mysql < "path/to/first-script"
# 800 s. = 15 m.
sleep 800
mysql < "path/to/second-script"
    
por 06.06.2015 / 23:25
1

Você pode gravar a saída em um arquivo e executá-lo como um programa shell, como abaixo:

sort -r ${TEMPRESULT2} | sed -e "s/^/DELETE BACKUP /g" | sed -e "s/$/ NOWARNING/g" > file.sh && chmod +x file.sh && sleep 15m && ./file.sh
    
por 05.06.2015 / 15:25