बैश फ़ंक्शन में वैकल्पिक पैरामीटर


12

मेरे पास जल्दी से एक नई एसवीएन शाखा बनाने के लिए एक फ़ंक्शन है जो ऐसा दिखता है

function svcp() { svn copy "repoaddress/branch/$1.0.x" "repoaddress/branch/dev/$2" -m "dev branch for $2"; }

जिसका उपयोग मैं जल्दी से एक नई शाखा बनाने के लिए करता हूं ताकि पता और कुछ अन्य सामान को कॉपी और पेस्ट किया जा सके। हालाँकि, संदेश (-m विकल्प) के लिए, मैं यह चाहूंगा कि यदि मैं एक तीसरा पैरामीटर प्रदान करता हूं तो इसका उपयोग संदेश के रूप में किया जाता है, अन्यथा "देव शाखा $ 2 के लिए" डिफ़ॉल्ट संदेश का उपयोग किया जाता है। क्या कोई समझा सकता है कि यह कैसे किया जाता है?

जवाबों:


20
function svcp() { 
    msg=${3:-dev branch for $2}
    svn copy "repoaddress/branch/$1.0.x" "repoaddress/branch/dev/$2" -m "$msg";
}

चर msgके लिए सेट है $3, तो $3गैर खाली है, अन्यथा यह के डिफ़ॉल्ट मान पर सेट है dev branch for $2$msgतब के लिए तर्क के रूप में प्रयोग किया जाता है -m


3

बैश मैन पेज से:

 ${parameter:-word}
          Use Default Values.  If parameter is unset or null, the expansion of word is substituted.  Otherwise, the value of parameter is substituted.

आपके मामले में, आप उपयोग करेंगे

$ फ़ंक्शन svcp () {
  def_msg = "$ 2 के लिए देव शाखा"
  echo svn copy "repoaddress / branch / $ 1.0.x" "repoaddress / शाखा / dev / $ 2" -m \ "$ {3: - $ def_msg} \";
}

$ svcp 2 रोमांचक_new_stuff
svn copy repoaddress / branch / 2.0.x repoaddress / शाखा / dev / रोमांचक_new_stuff -m "dev शाखा for रोमांचक_new_stuff"

$ svcp 2 रोमांचक_new_stuff "विश्व प्रभुत्व के लिए गुप्त नुस्खा"
svn copy repoaddress / branch / 2.0.x repoaddress / Branch / dev / रोमांचक_new_stuff -m "विश्व वर्चस्व के लिए गुप्त नुस्खा"
$

यदि आप svn कमांड से संतुष्ट हैं तो आप इको कमांड को हटा सकते हैं

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.