2013-02-19 10 views
13

Also habe ich herausgefunden, dass bash keine Ausnahmen behandelt (es gibt keine try/catch). Für mein Skript würde ich gerne wissen, ob ein Befehl erfolgreich war oder nicht. Kann jemand diese Versuch/Fang-Alternative in bash erklären?

Dies ist der Teil meines Codes jetzt:

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 

Die Dinge, die ich nicht verstehe, sind:

  • Linie 3, warum muss ich hinter die $command die 2 setzen ?
  • Zeile 5, was genau ist es mit dieser $?
+0

Wenn Sie beabsichtigen. Dies sind sehr grundlegende Details, und es gibt mehr so ​​kleine Details, als Sie SO Fragen über schreiben können. – hyde

+0

Was ist der Zweck der 'if ((...)); dann ... '? Ist 'cmd; wenn [$? == 0] ... 'grundlegend anders? – blong

Antwort

25

$? bedeutet der Rückkehrcode des zuletzt ausgeführten Befehls.

2> bedeutet, dass der Ausgang stderr (Standardfehlerdatenstrom) auf /dev/null umgeleitet wird.

+2

Nun, das war ein kurzer Besuch bei stackoverflow, danke! –

+0

Bitte markieren Sie als Antwort, wenn Sie mit meiner Antwort zufrieden sind :) mein Vergnügen Herr – legrandviking

11

Gerade FYI, dies wird auch funktionieren: Bash Scripting zu tun, google "sh Tutorial" oder "bash Tutorial", oder für mehr Hard-Core approacb `man bash`

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