명령 행 출력을 캡처하는 두 가지 방법이 있습니다 bash
.
레거시 Bourne 쉘 백틱
``
:var=`command`
$()
구문 (내가 아는 한 Bash에만 해당되거나 최소한 원래 Bourne과 같은 POSIX가 아닌 오래된 쉘에서는 지원되지 않음)var=$(command)
백틱과 비교하여 두 번째 구문을 사용하면 어떤 이점이 있습니까? 아니면 두 사람이 완전히 100 % 동일합니까?
$()
별명에서 사용 및 백틱에 대한 참고 사항 입니다. 당신이 가지고있는 경우에 alias foo=$(command)
당신의 .bashrc
다음 command
별칭이 명령하면 실행됩니다 자체가 동안 실행되는 .bashrc
해석. 로 alias foo=`command`
, command
별명이 실행될 때마다 실행됩니다. 그러나 (예 :) 형식으로 $
with 를 이스케이프하면 해석하는 대신 별칭이 실행될 때마다 실행됩니다 . 내가 테스트를 통해 알 수있는 한, 어쨌든; bash 문서 에서이 동작을 설명하는 것을 찾을 수 없습니다. $()
alias foo=\$(command)
.bashrc
`command`
command
는 한 번만 실행됩니다. 확인했습니다 : function aaa () {printf date; echo aaa >> ~ / test.txt; } alias test1 = aaa
. aaa 함수는 별칭 ( test1
)이 몇 번 실행 되었는지에 관계없이 (매번 로그인 한 후) 한 번만 실행됩니다. .bashrc (Debian 10에서)를 사용했습니다.
$()
POSIX이며 ksh, bash, ash, dash, zsh, busybox와 같은 모든 최신 Bourne 쉘에서 지원합니다. (그렇게 현대적인 것은 Solaris/bin/sh
가 아니지만 Solaris에서는 현대를/usr/xpg4/bin/sh
대신 사용해야합니다 ).