Bash shell Sciprt를 작성하며 Command 결과를 변수에 저장해야 하는 경우가 있다.

command1=`whoami`
echo $command1

command2=$(whoami)
echo $command2

command1 과 command2의 결과는 모두 같다. -> `` (backtic)과 $()는 같다.

command3= $(ls -al)
echo $command3
echo "$command3"

결과를 원본 그대로(여러줄로 표시)하려면 ““(큰따옴표)를 사용.

명령어가 변수에 저장될 때는, 실행이 된다!

다음의 예를 통해서 위의 말이 무슨 말인지 쉽게 이해 가능하다.

command4=$(cat <<_EOT_ >> /etc/hosts
0.0.0.0 testserver
_EOT_
)

cat 명령어를 사용해 /etc/hosts 파일에 “0.0.0.0 testserver” 문장을 넣는 명령어의 결과를 저장하는 예시이다. 이러한 명령어를 결과를 변수에 저장하기 이전에, /etc/hosts 파일에 해당 문장을 넣는 명령어가 수행된 이후이며, 그 결과가 저장이 된다.

즉, echo $(command4)를 통해서 그 결과를 출력하는 것이며, 변수를 저장하는 과정에 명령어가 실행이 된 이후인 것.

${}와 $()의 차이

$(command) is “command substitution” ${parameter} is “parameter substitution”