यह इस समय को सुलझाने के लिए उच्च समय है जो मुझे वर्षों से परेशान कर रहा है ...
मैं समय-समय पर इससे मिलता रहा और सोचा कि यही रास्ता है:
$(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। बिना $(...)किसी आवश्यकता के: शेल नए स्तर पर लागू होता है और आप सीधे लिख सकते हैं जैसे कि आपका दुभाषिया अब उस स्तर पर भी है।