2013-02-19 11 views
13

Quindi ho scoperto che bash non gestisce le eccezioni (non c'è try/catch). Per il mio script, vorrei sapere se un comando ha avuto successo o meno.Qualcuno potrebbe spiegare questa alternativa try/catch in bash?

questa è la parte del mio codice in questo momento:

command = "scp -p$port $user:[email protected]$host:$from $to" 
$command 2>/dev/null 

if (($? == 0)); then 
    echo 'command was successful' 
else 
    echo 'damn, there was an error' 
fi 

Le cose che non capisco sono:

  • linea 3, perché devo mettere la 2 dietro la $command ?
  • riga 5, che cosa è esattamente con questo $?
+0

Se avete intenzione di fare script bash, google "sh tutorial" o "tutorial di bash", o per ulteriori hard-core approacb 'man bash'. Questi sono dettagli molto basilari, e ci sono molti più piccoli dettagli di quelli che puoi scrivere QUINDI domande su .. – hyde

+0

Qual è lo scopo di 'if ((...)); allora ... '? È 'cmd; se [$? == 0] ... 'fondamentalmente diverso? – blong

risposta

25

$? indica il codice di ritorno dell'ultimo comando eseguito.

2> significa reindirizzare l'uscita stderr (flusso di errore standard) a /dev/null.

+2

Beh, questa è stata una visita molto breve a StackOverflow, grazie! –

+0

Per favore segna come risposta se ti senti soddisfatto della mia risposta :) piacere mio signore – legrandviking

11

Cordiali saluti, questo sarà anche funzionare:

if some_command 2>/dev/null ; then 
    echo 'command was successful' 
else 
    echo 'damn, there was an error' 
fi 
Problemi correlati