2013-02-19 10 views
13

तो मुझे पता चला कि बैश अपवादों को संभाल नहीं करता है (कोई कोशिश/पकड़ नहीं है)। मेरी लिपि के लिए, मैं जानना चाहता हूं कि कोई आदेश सफल था या नहीं।क्या कोई इस बैश में इस कोशिश/पकड़ विकल्प को समझा सकता है?

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 

बातें मुझे समझ नहीं आता हैं::

  • लाइन 3, मैं क्यों पीछे $command2 डाल करने की क्या ज़रूरत है

    यह मेरा कोड का हिस्सा अभी ?

  • लाइन 5, यह $ के साथ वास्तव में क्या है?
+0

आप, बैश पटकथा करना गूगल "श ट्यूटोरियल" या "बैश ट्यूटोरियल", या एक से अधिक हार्ड कोर approacb 'आदमी bash' के लिए करना चाहते हैं। ये बहुत ही बुनियादी विवरण हैं, और ऐसे छोटे विवरण हैं जिनके बारे में आप SO प्रश्न लिख सकते हैं .. – hyde

+0

'if ((...)) का उद्देश्य क्या है; फिर ... '? 'Cmd है; अगर [$? == 0] ... 'मूल रूप से अलग? – blong

उत्तर

25

$? का मतलब अंतिम निष्पादित आदेश का रिटर्न कोड है।

2> का अर्थ stderr (मानक त्रुटि स्ट्रीम) आउटपुट को /dev/null पर रीडायरेक्ट करना है।

+2

वैसे यह स्टैक ओवरफ्लो पर एक बहुत ही छोटी सी यात्रा थी, धन्यवाद! –

+0

अगर आप मेरे उत्तर से संतुष्ट हैं तो कृपया उत्तर के रूप में चिह्नित करें :) मेरी खुशी महोदय – legrandviking

11

बस FYI करें, यह भी काम करेगा:

if some_command 2>/dev/null ; then 
    echo 'command was successful' 
else 
    echo 'damn, there was an error' 
fi 
संबंधित मुद्दे