Beni yıllardır rahatsız eden bu bilmeceyi çözmenin tam zamanı ...
Bunu zaman zaman tanıştım ve bunun bir yol olduğunu düşündüm:
$(comm "$(arg)")
Ve görüşümün deneyim tarafından güçlü bir şekilde desteklendiğini düşündüm. Ama artık o kadar emin değilim. Shellcheck de kararını veremez. Her ikiside:
"$(dirname $0)"/stop.bash
^-- SC2086: Double quote to prevent globbing and word splitting.
Ve:
$(dirname "$0")/stop.bash
^-- SC2046: Quote this to prevent word splitting.
Arkasındaki mantık nedir?
(Shellcheck 0.4.4 sürümü, btw.)
shell_level_1 $(shell_level_2) shell_level_1
İçinde olduğunuzda, $(....)
bir "alt seviye" kabuk girin, AMA ilköğretim seviyesindeymiş gibi yazabilirsiniz (yani, doğrudan "
yerine yazabilirsiniz \"
, vb.). örnek: touch "/tmp/a file" ; echo "its size is: $(find "/tmp/a file" -ls | awk '{print $5}) ..." : if you used backticks you'd have to
\ "/ tmp / bir dosya \" `bulun ve print \$5
. Gerek $(...)
yok: kabuk yeni seviyeye adapte olur ve doğrudan tercümanınız da bu seviyedeymiş gibi yazabilirsiniz.