2010-02-01 14 views
10

मैं कुछ ऐसा करने के लिए wnat:zsh में, मैं प्रोग्राम के बाहर निकलने की स्थिति पर सशर्त कैसे कर सकता हूं?

if [[ git status &> /dev/null ]]; then 
    echo "is a git repo"; 
else 
    echo "is not a git repo"; 
fi 

सिवाय इसके कि मुझे नहीं पता कि बाहर निकलने की स्थिति पर जांच कैसे करें। मैं यह कैसे तय करुं?

धन्यवाद

उत्तर

9

उपयोग $?, यह पिछले आदेशों शामिल लौट कोड

संपादित करें: सटीक उदाहरण:

git status >& /dev/null 
if [ $? -eq 0 ]; then 
    echo "git status exited successfully" 
else 
    echo "git status exited with error code" 
fi 
+1

* खांसी * '&>' नहीं '> और ' –

+0

@ फिल - क्या आपने'> & 'चलाने की कोशिश की है? – orip

+0

ओह ठीक है, भूल गया,> और काम करता है, कभी-कभी, सिंटैक्स कितना संदिग्ध है इस पर निर्भर करता है - यह एक बुरी आदत है, हालांकि, और उपयोग करने के लिए बेहतर है>> जो संदिग्ध नहीं है। माफ़ कीजिये। –

17
बस उस

if git status &> /dev/null 
then 
    echo "is a git repo"; 
else 
    echo "is not a git repo"; 
fi 

की तरह या एक अधिक में

फॉर्म:

git status &> /dev/null && echo "is a git repo" || echo "is not a git repo" 
0

दूसरा रूप है कि मैं अक्सर उपयोग है निम्नलिखित:

git status &> /dev/null 
if (($?)) then 
    ... 

यह स्वीकार किए जाते हैं जवाब की तुलना में थोड़ा अधिक कॉम्पैक्ट है, लेकिन यह gregseth के दशक में के रूप में एक ही लाइन पर आदेश डाल करने के लिए आप की आवश्यकता नहीं है उत्तर (जो कभी-कभी आप चाहते हैं, लेकिन कभी-कभी पढ़ने के लिए बहुत मुश्किल हो जाता है)।

डबल ब्रांड्स zsh में गणितीय अभिव्यक्तियों के लिए हैं। (उदाहरण के लिए, here देखें।)

संबंधित मुद्दे

 संबंधित मुद्दे