Linux Bash shell: Leaving some ANSI codes (mostly color) and not interpreting some others from string in a function call -
यह मेरे मामले फ़ंक्शन का एक उदाहरण है:
फ़ंक्शन SendToScreen () {गूंज - ई "$ *"} इसलिए मैं इसे कॉल करता हूं:
SendToScreen "नमस्ते" और, अगर मैं रंग कोड जोड़ना चाहता / चाहती हूं:
वायलेटअगरग्राहक रंग = "\ 033 [38; 5; 99 एम" सामान्य रंग = "\ 033 [0 एम" प्रेषित स्क्रीन "नमस्कार" $ वायलेटअगरग्राहक रंग "वायलेट" $ सामान्य शब्द "शब्द।" यह मुझे सही देता है:
लेकिन अगर मैं कुछ डॉस-टाइप पथ ( \ स्लैश सहित) भेजना चाहता हूं तो समस्या आता है:
VioletForeGroundColor = "0 0 [38; 5; 99 एम] सामान्य कॉलर =" 0 0 [0 एम "मायडोस्पेट =" डी: \ वििवइक्टर "प्रेषित स्क्रीन" नमस्कार "$ वायलेट अग्रीग्राउंड कॉल्लर" वायलेट "$ सामान्य कॉलर" शब्द। पथ $ MyDOSPath है " क्योंकि \ v कुछ प्रकार एएनएसआई कोड है, इसलिए इस समय मैं प्राप्त करता हूं:
मुझे अपने फ़ंक्शन को आउटपुट रंग टेक्स्ट (बोल्ड, कर्सर, रेखांकन ... आदि) की आवश्यकता है, इसलिए मैं echo -e का उपयोग करना चाहिए
मैं कैसे इस समस्या को हल कर सकता इस तरह के कूट नियंत्रण कोड के साथ इस तरह के अक्षर पर टकराने \ v (मुझे लगता है कि वहाँ अन्य हो जाएगा)?
मैं फ़ंक्शन को संशोधित करके जारी करना चाहूंगा, लेकिन मुझे यकीन नहीं है कि यह उचित विधि है।
धन्यवाद।
EDIT-1: हम \ 033 को केवल एएनएसआई संहिता के रूप में भी ज्ञात करेंगे, जो कि रहने की जरूरत है।
नया जवाब:
फ़ंक्शन SendToScreen () {गूंज- e $ (गूंज" $ {* // \\ / \\\\} "| sed 's / \\\\ 033 \ [/ \\ 033 \ [/ g']; } यह एक सबकुछ बच जाता है, फिर किसी भी चीज़ को बचता है जो रंग अनुक्रम (\ 033 [] जैसा दिखता है। फ़ाइल नामों को रंग अनुक्रम के रूप में भेजने की संभावना बहुत कम है आप इसे और भी श्वेत सूची से केवल उन रंग अनुक्रमों तक कम कर सकते हैं, जिन्हें आप अनुमति देना चाहते हैं, और sed कमांड के अनुक्रम को क्रमशः बदलते हैं जो उन सटीक दृश्यों से बच निकलता है।
ओल्ड उत्तर दें : मान लें कि आप \ v और \ n से भागना चाहते हैं, आप यह कर सकते हैं:
फ़ंक्शन SendToScreen () {a = "$ {* // \\ v / \\\\ v} "a =" $ {a // \\ n / \\\\ n} "echo -e" $ a "} आप इसे बढ़ा सकते हैं जो कुछ भी बचता है, आप उसे संसाधित नहीं करना चाहते।
Comments
Post a Comment