2012-12-10 14 views
12

मैं कैसे बता सकता है, तो एक git clone एक bash स्क्रिप्ट में कोई त्रुटि थी में विफल रहा है कैसे पता लगाने के लिए?अगर एक Git क्लोन एक bash स्क्रिप्ट

git clone [email protected]:my-username/my-repo.git 

है कि कोई त्रुटि थी, मैं बस exit 1 करना चाहते हैं;

उत्तर

17

यहाँ कुछ आम रूप हैं। चुनने के लिए सबसे अच्छा कौन सा है जो आप करते हैं उस पर निर्भर करता है। आप किसी भी स्क्रिप्ट या उनमें से किसी एक स्क्रिप्ट में बिना खराब शैली के संयोजन का उपयोग कर सकते हैं।


if ! failingcommand 
then 
    echo >&2 message 
    exit 1 
fi 

failingcommand 
ret=$? 
if ! test "$ret" -eq 0 
then 
    echo >&2 "command failed with exit status $ret" 
    exit 1 
fi 

failingcommand || exit "$?" 

failingcommand || { echo >&2 "failed with $?"; exit 1; } 
+0

आप जोड़कर पर विचार हो सकता> और गूंज आदेश को 2 यह stdout के बजाय stderr करने के लिए भेजने के लिए। अन्यथा सही जवाब। +1 – Nemo

+0

जब 'exit', बुला' आर्ग के बिना exit' 'के रूप में बाहर निकलने के $ एक ही है?'। – jordanm

+0

@jordanm - इन उदाहरणों, $ को छोड़कर? कॉल को 'echo'' पर संशोधित किया जाएगा। तो एक साधारण 'निकास' स्थिति शून्य के साथ बाहर निकल जाएगा। – Nemo

5

आप की तरह कुछ कर सकता है:

git clone [email protected]:my-username/my-repo.git || exit 1 

या यह exec:

exec git clone [email protected]:my-username/my-repo.git 

बाद खोल प्रक्रिया क्लोन आपरेशन द्वारा ले लिया गया है, और अगर यह विफल की अनुमति देगा, वापसी एक त्रुटि। आप कार्यकारी here के बारे में और अधिक जानकारी प्राप्त कर सकते हैं।

+0

लगभग काम कर रहा है, लेकिन मैं कैसे एक गूंज "त्रुटि संदेश यहाँ" जोड़ सकते हैं तो 'बाहर निकलने चलाने 1'? मैंने कोशिश की: '|| इको "यहां त्रुटि संदेश" && 1 से बाहर निकलें लेकिन यह सफलता पर भी हमेशा बाहर निकलता है। धन्यवाद। – Justin

+0

आपको 'failingcommand || की आवश्यकता है {echo संदेश और निकालें 1; } 'क्योंकि' '' '' '' 'से अधिक मजबूत नहीं है। और फिर आप बेहतर 'असफल कमांड || का उपयोग करें {गूंज संदेश; बाहर निकलें 1; } ' –

0

विधि 1:

git clone [email protected]:my-username/my-repo.git || exit 1 

विधि 2:

if ! (git clone [email protected]:my-username/my-repo.git) then 
    exit 1 
    # Put Failure actions here... 
else 
    echo "Success" 
    # Put Success actions here... 
fi 
संबंधित मुद्दे