Ho uno script che scrive su file temporanei per facilitare la sua esecuzione. Alla fine del mio script, chiamo semplicemente il numero rm filename
per pulire i file temporanei che ho creato. Il problema è quando lo script termina a causa di un errore o viene interrotto. In questi casi, l'istruzione rm
non viene mai raggiunta e pertanto i file non vengono mai puliti. Esiste un modo per specificare un comando da eseguire all'uscita indipendentemente dal fatto che si sia verificata o meno l'uscita?Esiste un modo per eseguire un comando all'uscita (indipendentemente da come è uscito lo script)?
risposta
Per gli interrupt, è possibile utilizzare onintr
per specificare un gestore che rimuove i file, quindi esce.
Sì; si può scrivere:
trap 'rm filename' EXIT
(. Vedi la descrizione di trap
in §4.1 "Bourne Shell Builtins" of the Bash Reference Manual)
Naturalmente ci sono casi estremi in cui il comando non verrà eseguito — ad esempio, se qualcuno stacca improvvisamente la macchina, o anche solo invia SIGKILL
all'istanza Bash che esegue lo script — ma questo è il più affidabile possibile.
Sì, è possibile utilizzare trap
in questo modo:
trap "rm -f filename" EXIT
Uno script potrebbe essere la seguente:
#/bin/bash
trap "rm -f filename" EXIT # remove file when script exits
touch filename # create file
some-invalid-command # trigger an error
Per interruzioni: impostare lo script a segnali trappola come SIGHUP e SIGTERM. Questo ti aiuterà con tutto tranne SIGKILL (che non può essere catturato). Google "segnale di script bash trappola"
Per uscire nonsuccessful: la struttura si codifica in modo tale che si chiama una funzione per rm nome del file (o semplicemente mettere la dichiarazione) prima di uscire lo script
- 1. comando script NPM per eseguire un comando script da un altro package.json
- 2. Esiste un buon DSL per manipolare gli script MySQL indipendentemente da un particolare framework web?
- 3. Come eseguire un comando nel terminale da uno script Python?
- 4. Esiste un modo per eseguire Trac offline?
- 5. Come eseguire lo script Python da Java?
- 6. Come eseguire un comando esterno nello script Vim?
- 7. BASH come eseguire un comando sulla terminazione dello script?
- 8. Come eseguire lo script gradle dal gradle
- 9. di Ruby può essere vuoto sulle finestre a seconda di un modo per eseguire lo script
- 10. Come eseguire lo script sql di Postgres da un altro script?
- 11. Esiste un comando per verificare se esiste un database da Entity Framework?
- 12. Esiste un modo per eseguire un comando da riga di comando da JScript (non javascript) in Windows Scripting Host (WSH) cscript.exe?
- 13. Javascript: esiste un modo per distruggere tutti gli elementi di un array con un solo comando?
- 14. Un modo semplice per eseguire lo stesso script .sql su più database contemporaneamente?
- 15. C'è un modo per verificare se lo script è in esecuzione da PowerShell ISE?
- 16. In che modo eseguire lo streaming da un processo?
- 17. Eseguire un comando shell da un'applicazione .NET
- 18. Come eseguire un comando come utente specifico in uno script di init?
- 19. cercando di eseguire il comando git usando lo script python
- 20. Esegui script bash da un altro script senza attendere che lo script finisca di essere eseguito?
- 21. Come posso eseguire periodicamente un comando bash?
- 22. Come eseguire uno script PowerShell da SSIS
- 23. È possibile eseguire gli script Smalltalk dalla riga di comando?
- 24. errore: lo script di installazione è uscito con l'errore: il comando 'gcc' non riuscita con stato di uscita 1
- 25. SOAPUI: Come includere lo script Groovy da un file esterno
- 26. Come eseguire uno script python da java?
- 27. Sklearn: Esiste un modo per eseguire il debug di Pipelines?
- 28. Come posso eseguire un comando esterno in modo asincrono da Python?
- 29. Esiste un modo per eseguire l'applicazione GUI in modo headless in Mac?
- 30. Esiste un modo per eseguire un file JavaScript all'interno della shell Node.js?
Date un'occhiata qui - potrebbe essere quello che stai cercando http://stackoverflow.com/questions/64786/error-handling-in-bash – repoman