निम्न स्क्रिप्ट एक अप्रत्याशित उत्पादन झुकेंगे: उबंटू 14 के तहत एक पार्टी स्क्रिप्ट के रूप मेंमैं बैश प्रिंटफ़ में बैकस्लाश की श्रृंखला से कैसे बचूं?
printf "escaped slash: \\ \n"
printf "2 escaped slashes: \\\\ \n"
printf "3 escaped slashes: \\\\\\ \n"
printf "4 escaped slashes: \\\\\\\\ \n"
भागो, मैं देख रहा हूँ:
escaped slash: \
2 escaped slashes: \
3 escaped slashes: \\
4 escaped slashes: \\
अं .. क्या?
नोट यह काम करता है क्योंकि आप 'printf' तर्क को देखने से पहले किसी भी बैकस्लैश को हटाने से' bash' को रोकते हैं। – chepner
@chepner: मैं सहमत हूं। ऐसा लगता है कि मूल्यांकन का क्रम है: 1) 'bash' 'FORMAT' स्ट्रिंग * का विस्तार करता है * (केवल डबल कोट्स से घिरा हुआ है!) *। 2) 'printf'' ARGUMENTS' और 'FORMAT' को एक स्ट्रिंग में जोड़ती है। 3) अंतिम स्ट्रिंग फिर से विस्तारित किया जाता है (यानी \\ बन जाता है \)। 4) परिणाम आखिरकार मुद्रित है। –
बंद करें; 'printf' केवल तर्कों को सम्मिलित करने से पहले 'FORMAT' को संसाधित करता है; 'printf '% s' '\ n'' के साथ' printf '\ n'' की तुलना करें। – chepner