Altro
Come controllare se un comando è riuscito?
C'è un modo per controllare se c'è un errore nell'esecuzione di un comando?
Esempio :
test1=`sed -i "/:@/c connection.url=jdbc:oracle:thin:@$ip:1521:$dataBase" $search`
valid $test1
function valid () {
if $test -eq 1; then
echo "OK"
else echo "ERROR"
fi
}
Ho già provato a farlo ma sembra che non funzioni. Non so come farlo.
242
3
Il valore di ritorno è memorizzato in
$?
. 0 indica il successo, altri indicano l'errore.Come qualsiasi altro valore testuale, puoi memorizzarlo in una variabile per un confronto futuro:
Per i possibili operatori di confronto, vedi
man test
.Se hai solo bisogno di sapere se il comando è riuscito o fallito, non preoccuparti di testare
$?
, prova direttamente il comando. Per esempio:E assegnare l'output a una variabile non cambia il valore di ritorno (beh, a meno che non si comporti diversamente quando stdout non è un terminale, ovviamente).
http://mywiki.wooledge.org/BashGuide/TestsAndConditionals spiega
if
in modo più dettagliato.$? dovrebbe contenere lo stato di uscita del comando precedente, che dovrebbe essere zero per nessun errore.
Quindi, qualcosa come;
per la maggior parte dei casi, è più facile usare il costrutto && per concatenare comandi che devono dipendere l'uno dall'altro. Quindi
cd /nonexistant && echo success!
non sarebbe non echo success perché il comando si interrompe prima di &&. Il corollario di questo è ||, dovecd /nonexistant || echo fail
sarebbe echo fail perché cd è fallito. (questo diventa utile se usate qualcosa come ||exit, che terminerà lo script se il comando precedente è fallito).