2011-06-28 15 views
6

मेरे पास एक कमांड प्रोजेक्ट करने से पहले चलाने वाले कमांड की एक श्रृंखला है, इसलिए मैंने इसे एक बैश स्क्रिप्ट में रखा है। अंत में मुझे लगता है कि करता है एक ब्लॉक है प्रतिबद्ध:बैश: पासिंग स्क्रिप्ट तर्क

if [ -z $1 ]; then git commit -a -m "no message"; else; git commit -a -m $1; fi 

उम्मीद के साथ कि संदेश स्क्रिप्ट को पारित कर दिया है

$ ./dostuff_then_commit "my message" 

जब मैं ऐसा करते हैं, मैं कि

fatal: Paths with -a does not make sense. 

क्योंकि $1 परिभाषित किया गया है लेकिन संदेश सही ढंग से पारित नहीं किया गया है? क्या कोई समस्या देख सकता है और/या समाधान का सुझाव दे सकता है? धन्यवाद और।

उत्तर

6

यदि संदेश में रिक्त स्थान हैं, तो यह git commit पर कई पैरामीटर तक विस्तारित होगा। (ध्यान दें अन्य मामले में उद्धृत।) उद्धरण यह:

if [ -z "$1" ]; then 
    git commit -a -m "no message" 
else 
    git commit -a -m "$1" 
fi 

परिशिष्ट की एक जोड़े:

  • मैं भी [] में से एक है, एक अलग कारण के लिए उद्धृत किया: अगर प्रतिबद्ध संदेश खाली था, आपको [ से अनुपलब्ध पैरामीटर डायग्नोस्टिक मिलेगा। दोबारा, उद्धरण यह इस से बचाता है। (आप इसके बजाय इसे पकड़ना चाहते हैं और उपयोगकर्ता को एक वास्तविक प्रतिबद्ध संदेश दर्ज करना चाहते हैं, हालांकि यदि यह आवश्यक था तो आपको शायद asdfzxcv संदेश भेजना होगा ....)

  • त्रुटि संदेश आप ' पुनः प्राप्त करना विशेष रूप से है क्योंकि प्रतिबद्ध संदेश का पहला शब्द प्रतिबद्ध संदेश के रूप में लिया जाता है और शेष को विशिष्ट फ़ाइल नामों के रूप में पारित किया जाता है; यह त्रुटि संदेश कहता है, सब कुछ करने के लिए git कहने पर कोई समझ नहीं आता है (-a)। उद्धरण के साथ $1 चारों ओर

+0

वहाँ अतिरिक्त बिट के लिए धन्यवाद। – hatmatrix

2

प्रयास करें - अन्यथा Git सोचता my संदेश है और message कुछ और ही है।

if [ -z $1 ]; then git commit -a -m "no message"; else; git commit -a -m "$1"; fi 
1

आप "$1" के बजाय $1 as $ 1` का उपयोग उस में रिक्त स्थान हो सकता है चाहिए।

$1 साथ

में प्रतिस्थापन my message के रूप में:

git commit -a -m $1 

देता है:

git commit -a -m my message 

जबकि:

git commit -a -m "$1" 

देता है:

git commit -a -m "my message" 
2

मैं बस को जोड़ने के लिए है कि आप तो जैसे विकल्प गठजोड़ कर सकते हैं करना चाहते हैं:

git commit -am "some message" 
+0

आह, धन्यवाद ..... – hatmatrix

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