몇 년 동안 저를 괴롭혔던이 수수께끼를 풀어야 할 때가되었습니다 ...
나는 때때로 이것을 만나고 이것이 갈 길이라고 생각했다.
$(comm "$(arg)")
그리고 내 견해는 경험에 의해 강력하게 뒷받침된다고 생각했습니다. 그러나 나는 더 이상 확신하지 못한다. Shellcheck 도 마음을 사로 잡을 수 없습니다. 둘 다입니다.
"$(dirname $0)"/stop.bash
^-- SC2086: Double quote to prevent globbing and word splitting.
과:
$(dirname "$0")/stop.bash
^-- SC2046: Quote this to prevent word splitting.
뒤에 논리는 무엇입니까?
(이것은 Shellcheck 버전 0.4.4, btw입니다.)
"$(dirname "$0")"/stop.bash
? 작동하는 것 같습니다 ... 이야기는 무엇입니까?
shell_level_1 $(shell_level_2) shell_level_1
: 당신이 안에있을 때 $(....)
쉘의 "하위 레벨"을 입력하십시오. 그러나 기본 레벨에있는 것처럼 작성할 수 있습니다 (즉, "
대신 대신 직접 쓸 수 있음 \"
). 예 : 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 / a file \"`및을 찾으십시오 print \$5
. 와 $(...)
필요가 없습니다 : 쉘 새로운 수준에 적응하고 통역 지금 너무 그 수준에 인 것처럼 직접 쓸 수 있습니다.