यह एक बहु-पंक्ति टिप्पणी नहीं है। #
एक एकल पंक्ति टिप्पणी है।
:
(बृहदान्त्र) एक टिप्पणी नहीं है, बल्कि एक शेल-इन-कमांड है जो मूल रूप से एक एनओपी है , एक अशक्त ऑपरेशन जो वापसी के अलावा कुछ भी नहीं करता है, जैसे कि true
(और इस तरह $?
एक साइड इफेक्ट के रूप में 0 पर सेट )। हालाँकि चूंकि यह एक कमांड है, यह तर्कों को स्वीकार कर सकता है, और चूंकि यह अपने तर्कों को अनदेखा करता है, ज्यादातर मामलों में यह सतही रूप से एक टिप्पणी की तरह काम करता है। इस कीचड़ के साथ मुख्य समस्या यह है कि तर्कों का अभी भी विस्तार किया गया है, जिसके परिणामस्वरूप अनपेक्षित परिणामों की मेजबानी की जा सकती है। तर्क अभी भी वाक्यविन्यास त्रुटियों से प्रभावित हैं, पुनर्निर्देशन अभी भी किया जाता है इसलिए अलग : > file
हो जाएगा file
, और : $(dangerous command)
प्रतिस्थापन अभी भी चलेंगे।
शेल स्क्रिप्ट में टिप्पणी डालने के लिए कम से कम आश्चर्यजनक पूरी तरह से सुरक्षित तरीका है #
। मल्टी-लाइन टिप्पणियों के लिए भी छड़ी। टिप्पणियों के लिए कभी भी (ab) उपयोग करने का प्रयास न करें :
। शेल में कोई समर्पित मल्टी-लाइन टिप्पणी तंत्र नहीं है जो समान भाषाओं /* */
में स्लैश-स्टार फॉर्म के अनुरूप है C
।
संपूर्णता के लिए, लेकिन इसलिए नहीं कि यह अनुशंसित अभ्यास है, मैं उल्लेख करूंगा कि बहु-पंक्ति "टिप्पणियां" करने के लिए यहां दस्तावेजों का उपयोग करना संभव है :
: <<'end_long_comment'
This is an abuse of the null command ':' and the here-document syntax
to achieve a "multi-line comment". According to the POSIX spec linked
above, if any character in the delimiter word ("end_long_comment" in
this case) above is quoted, the here-document will not be expanded in
any way. This is **critical**, as failing to quote the "end_long_comment"
will result in the problems with unintended expansions described above.
All of this text in this here-doc goes to the standard input of :, which
does nothing with it, hence the effect is like a comment. There is very
little point to doing this besides throwing people off. Just use '#'.
end_long_comment
CommentedOutBlock() { echo "test"; }