पीडब्ल्यूडी पर बैश उर्फ ​​इनवोकेशन सशर्त कैसे करें?


5

मेरा वर्तमान में यह उपनाम है:

alias cmakerel='cmake -DCMAKE_BUILD_TYPE=Release -Wno-dev ../../ && make -j4'

अनिवार्य रूप से, यह cmake को कॉल करेगा a out-of-source पीडब्ल्यूडी से निर्माण। यह ठीक काम करता है, लेकिन जैसा है, इसे लगभग कहीं से भी चलाया जा सकता है (जो मुझे नहीं चाहिए)।

मैं इस उपनाम को कैसे संशोधित करूं ताकि यह और केवल अगर स्ट्रिंग चलता है bld मेरी वर्तमान कार्य निर्देशिका में है?

मुझे इस बदलाव की आवश्यकता है क्योंकि इसके बिना, मैं कभी-कभी गलती से इस कमांड को tst डाइरेक्टरी या किसी अन्य डायरेक्टरी से प्राप्त कर लेता हूं, जहां मैं कुल गड़बड़ करता हूं।

जवाबों:


10

से man bash:

लगभग हर उद्देश्य के लिए, शेल कार्यों के द्वारा उपनामों को अलग कर दिया जाता है।

इसलिए इसे शेल फंक्शन बनाएं।

function cmakerel {
    if expr match "$PWD" '.*bld.*' >/dev/null ; then
        cmake -D....
    else
        echo "Wrong directory!"
    fi
}

यह एक नियमित अभिव्यक्ति है जिसे आप अपनी आवश्यकताओं के साथ समायोजित कर सकते हैं।


महान टिप! अगर मैं कर सकता तो मैं तुम्हें +5 देता। TYVM।
kfmfe04

btw, मुझे कैसे संशोधित करना चाहिए cmakerel जब मैं कॉल करता हूं तो कुछ विफलता मूल्य वापस करने के लिए ऊपर cmakerel && make check दूसरा भाग विफलता पर नहीं मिलता है?
kfmfe04

2
@ kfmfe04 एक पंक्ति जोड़ें exit $? नीचे cmake कहते हैं। इसके बाद निष्पादित अंतिम कमांड के एक्जिट कोड के साथ बाहर निकलेगा। जब तक आप पाइप का उपयोग नहीं करते हैं, यह सीधा है। नीचे echo बुलाओ, जोड़ो exit 1
Daniel Beck

बहुत शुक्रिया! इसे अभी पोस्ट किए गए प्रश्न के उत्तर के रूप में जोड़ें और इसलिए मैं आपको कुछ बिंदु भेज सकता हूं
kfmfe04
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.