एक बाश स्क्रिप्ट में मुझे दूसरे प्रोग्रामर से मिला, कुछ पंक्तियों की लंबाई 80 कॉलम से अधिक थी। यह दर्शाने के लिए कि लाइन को अगली लाइन पर जारी रखने के लिए लाइन में किस वर्ण या चीज़ को जोड़ा जाना है?
एक बाश स्क्रिप्ट में मुझे दूसरे प्रोग्रामर से मिला, कुछ पंक्तियों की लंबाई 80 कॉलम से अधिक थी। यह दर्शाने के लिए कि लाइन को अगली लाइन पर जारी रखने के लिए लाइन में किस वर्ण या चीज़ को जोड़ा जाना है?
जवाबों:
चरित्र एक बैकस्लैश है \
से बैश मैनुअल :
बैकस्लैश चरित्र '\' का उपयोग अगले वर्ण पढ़ने के लिए और लाइन निरंतरता के लिए कोई विशेष अर्थ निकालने के लिए किया जा सकता है।
^M। समस्या यह प्रतीत होती है कि स्क्रिप्ट मुझे किसी ऐसे व्यक्ति द्वारा दी गई थी जो विंडोज़ का उपयोग करता है। एक त्वरित dos2unixतय :) :)
सामान्य तौर पर, आप अगली पंक्ति को जारी रखने के लिए आदेश के लिए एक पंक्ति के अंत में बैकस्लैश का उपयोग कर सकते हैं। हालाँकि, ऐसे मामले हैं जहाँ आदेशों को स्पष्ट रूप से जारी रखा जाता है, अर्थात् जब लाइन टोकन के साथ समाप्त होती है, तो कानूनी रूप से एक कमांड को समाप्त नहीं कर सकती है। उस स्थिति में, शेल जानता है कि अधिक आ रहा है, और बैकस्लैश को छोड़ा जा सकता है। कुछ उदाहरण:
# In general
$ echo "foo" \
> "bar"
foo bar
# Pipes
$ echo foo |
> cat
foo
# && and ||
$ echo foo &&
> echo bar
foo
bar
$ false ||
> echo bar
bar
अलग, लेकिन संबंधित, उद्धरण के अंदर निहित निरंतरता है। इस मामले में, बैकस्लैश के बिना , आप बस स्ट्रिंग में एक नई रेखा जोड़ रहे हैं।
$ x="foo
> bar"
$ echo "$x"
foo
bar
एक बैकस्लैश के साथ , आप फिर से लॉजिकल लाइन को कई लॉजिकल लाइन में विभाजित कर रहे हैं।
$ x="foo\
> bar"
$ echo "$x"
foobar
[[- ]]हालत, लेकिन दूसरों में नहीं है, और मैं बाहर नियम आंकड़ा करने की कोशिश कर रहा हूँ।
\नौकरी करता है। @ गिलियूम का जवाब और @ जॉर्ज की टिप्पणी स्पष्ट रूप से इस सवाल का जवाब देती है। यहाँ मैं समझाता हूँ कि The backslash has to be the very last character before the end of line character.इस आदेश पर विचार क्यों करें:
mysql -uroot \ -hlocalhost
यदि के बाद एक स्थान है \, तो लाइन निरंतरता काम नहीं करेगी। कारण यह है कि \ अगले वर्ण के लिए विशेष अर्थ को हटा देता है जो कि एक स्थान है जो अदृश्य रेखा फ़ीड वर्ण नहीं है। लाइन फ़ीड वर्ण \इस उदाहरण में स्थान नहीं होने के बाद है ।