Ini saatnya untuk memecahkan teka-teki yang telah mengganggu saya selama bertahun-tahun ...
Saya telah bertemu ini dari waktu ke waktu dan berpikir inilah jalan yang harus ditempuh:
$(comm "$(arg)")
Dan pikir pandangan saya sangat didukung oleh pengalaman. Tapi saya tidak begitu yakin lagi. Shellcheck tidak bisa mengambil keputusan juga. Keduanya:
"$(dirname $0)"/stop.bash
^-- SC2086: Double quote to prevent globbing and word splitting.
Dan:
$(dirname "$0")/stop.bash
^-- SC2046: Quote this to prevent word splitting.
Apa logika di baliknya?
(Ini Shellcheck versi 0.4.4, btw.)
"$(dirname "$0")"/stop.bash
:? Tampaknya berhasil ... Apa ceritanya?
shell_level_1 $(shell_level_2) shell_level_1
ketika Anda berada di dalam $(....)
Anda memasukkan "sublevel" shell, TETAPI Anda dapat menulis di dalamnya seolah-olah Anda berada di tingkat dasar (yaitu, Anda dapat langsung menulis "
bukan \"
, dll). mis: touch "/tmp/a file" ; echo "its size is: $(find "/tmp/a file" -ls | awk '{print $5}) ..." : if you used backticks you'd have to
temukan \ "/ tmp / file \" `dan print \$5
. Tanpa $(...)
perlu: shell beradaptasi ke level yang baru dan Anda dapat menulis langsung seolah-olah penerjemah Anda sekarang berada di level itu juga.