क्या कोई यह बता सकता है कि लिनक्स खोल में भागने वाले चरित्र में पर्दे के पीछे क्या हो रहा है? मैंने निम्नलिखित की कोशिश की और बहुत कुछ जाना, बिना किसी सफलता के यह समझने में कि क्या (और कैसे) चल रहा है:
root@sv01:~# echo -e "\ Hello!"
\ Hello!
root@sv01:~# echo -e "\\ Hello!"
\ Hello!
root@sv01:~# echo -e "\\\ Hello!"
\ Hello!
root@sv01:~# echo -e "\\\\ Hello!"
\ Hello!
root@sv01:~# echo -e "\\\\\ Hello!"
\\ Hello!
root@sv01:~# echo -e "\\\\\\ Hello!"
\\ Hello!
root@sv01:~# echo -e "\\\\\\\ Hello!"
\\ Hello!
root@sv01:~# echo -e "\\\\\\\\ Hello!"
\\ Hello!
root@sv01:~# echo -e "\\\\\\\\\ Hello!"
\\\ Hello!
root@sv01:~# echo -e "\n Hello!"
Hello!
root@sv01:~# echo -e "\\n Hello!"
Hello!
root@sv01:~# echo -e "\\\n Hello!"
\n Hello!
मैं वहां पूरी तरह से खो गया हूं, इसलिए उदाहरण के लिए, तीन बैकस्लैश केवल एक बैक स्लैश क्यों देते हैं? मुझे उम्मीद है: पहले दो एक से बच जाएंगे, तीसरे से बचने के लिए कुछ भी नहीं मिलेगा, इसलिए यह एक स्लैश (पहले प्रयोग में रेखा) रहेगा, लेकिन क्या हो रहा है कि तीसरा सिर्फ गायब हो गया है।
मुझे चार में से एक बैकस्लैश क्यों मिल रहा है \\\\ Hello
? मुझे उम्मीद है कि प्रत्येक जोड़ी एक बैक स्लैश -> दो बैकस्लैश देगी।
और मुझे अंतिम केस में तीन बैकस्लैम की आवश्यकता क्यों है \ n बच निकलने के लिए? भागने की पृष्ठभूमि में क्या हो रहा है? और यह कैसे \\n
मामले से अलग है ?
पिछली पंक्तियों में जो चल रहा है, उसके बारे में किसी भी स्पष्टीकरण की मैं सराहना करता हूं।
echo -e
सुरक्षित नहीं है: echo
मानक के अनुसार व्यवहार करेगा यदि दोनों posix
और xpg_echo
रनटाइम विकल्प सक्षम हैं, या यदि समान बिल्ड-टाइम विकल्पों के साथ संकलित किया गया है। इसके printf
बजाय उपयोग करने के लिए सुरक्षित अभ्यास है - ऊपर दिए गए लिंक के आवेदन पत्र और राष्ट्रीय अनुभागों को देखें कि कैसे printf
प्रतिस्थापन के रूप में कार्य करना है echo
।
echo -e
व्यवहार किसी भी तरह से परिभाषित नहीं है - pubs.opengroup.org/onlinepubs/9699919799/utilities/echo.html देखें । आउटपुट पूरी तरह से कार्यान्वयन-परिभाषित है यदि इनपुट में कहीं भी शाब्दिक बैकस्लैश है, और एकमात्र अनुमत विकल्प है-n
(इसका मतलब है कि मानकों-अनुरूप कार्यान्वयन का इसके आउटपुट परecho -e
प्रिंट होगा-e
)।