क्या चल रहा है, इसका अंदाजा लगाने के लिए
% alias striplines='print -lr awk " /^$/ {print \"\n\"; } /./ {printf( \" %s \",$0);}"'
% striplines
awk
/^$/ {print "\n"; } /./ {printf( " %s ",zsh);}
चूंकि $
वर्ण दोहरे उद्धरण में हैं (जब वे उर्फ विस्तार के बाद विस्तारित होते हैं), उन्हें शेल द्वारा व्याख्या किया जाता है। उद्धरण को सही पाने के लिए, पूरे उपनाम की परिभाषा को एकल उद्धरण में रखना आसान है। एकल उद्धरण के अंदर क्या है, जब उपनाम का उपयोग किया जाता है तो विस्तार किया जाएगा। अब जब यह तर्क awk
दोहरे उद्धरण चिह्नों में घिरा हुआ है, तो यह स्पष्ट है कि आपको बैकस्लैश की आवश्यकता है \"$
।
alias striplines='print -lr awk " /^\$/ {print \"\n\"; } /./ {printf( \" %s \",\$0);}"'
सिंगल-कोटेड स्ट्रिंग को सिंगल-कोट करने के लिए एक उपयोगी मुहावरा यह है कि एक सिंगल-क्वैड स्ट्रिंग में '\''
शाब्दिक एकल उद्धरण डालने का एक तरीका है। तकनीकी रूप से एकल-उद्धृत स्ट्रिंग, बैकस्लैश-उद्धृत '
और अन्य एकल-उद्धृत स्ट्रिंग का एक जूसकप है। ''
अंत में juxtaposed खाली स्ट्रिंग को हटाया जा सकता है।
alias striplines='print -lr awk '\'' /^$/ {print "\n"; } /./ {printf( " %s ",$0);}'\'
इस लंबे स्पष्टीकरण के बाद, एक सिफारिश: जब यह एक उपनाम के लिए बहुत जटिल है, तो एक फ़ंक्शन का उपयोग करें ।