यह इस समय को सुलझाने के लिए उच्च समय है जो मुझे वर्षों से परेशान कर रहा है ...
मैं समय-समय पर इससे मिलता रहा और सोचा कि यही रास्ता है:
$(comm "$(arg)")
और मुझे लगा कि मेरे विचार को अनुभव से बहुत समर्थन मिला। लेकिन मुझे अब यकीन नहीं है। शेलचेक अपना दिमाग भी नहीं बना सकता है। यह दोनों है:
"$(dirname $0)"/stop.bash
^-- SC2086: Double quote to prevent globbing and word splitting.
तथा:
$(dirname "$0")/stop.bash
^-- SC2046: Quote this to prevent word splitting.
इसके पीछे क्या तर्क है?
(यह शेलचेक संस्करण 0.4.4 है, btw।)
shell_level_1 $(shell_level_2) shell_level_1
:: जब आप अंदर होते हैं, $(....)
तो आप शेल के "सलेवल" में प्रवेश करते हैं, लेकिन क्या आप इसमें लिख सकते हैं जैसे कि आप प्राथमिक स्तर पर थे (यानी, आप "
इसके बजाय सीधे लिख सकते हैं \"
, आदि)। ex: touch "/tmp/a file" ; echo "its size is: $(find "/tmp/a file" -ls | awk '{print $5}) ..." : if you used backticks you'd have to
find \ "/ tmp / a file \" `and print \$5
। बिना $(...)
किसी आवश्यकता के: शेल नए स्तर पर लागू होता है और आप सीधे लिख सकते हैं जैसे कि आपका दुभाषिया अब उस स्तर पर भी है।