어쩌다
echo `echo "foo"`
유효하지만
echo `awk '{ print "foo" }'`
아니요?
답변1
프로그램은 awk
입력을 기다리고 각 입력 줄에 대해 단어를 인쇄합니다 foo
. 이것이 awk
바로 프로그램이 하는 일이다 { print "foo" }
.
대조적으로, echo
첫 번째 명령 대체에서는 입력이 대기되지 않습니다.
awk
프로그램이 입력 없이 무언가를 인쇄하도록 하시겠습니까 ? 출력을 블록으로 수행하십시오 BEGIN
.
awk 'BEGIN { print "foo" }'
블록 BEGIN
이 실행됩니다.앞으로입력의 첫 번째 줄을 읽고 스크립트에 다른 블록도 없고 입력 파일도 없으므로 종료됩니다.
또한 echo $( ... )
또는 같은 코드를 작성하지 말고 echo ` ... `
명령 대체에 해당 코드를 사용하십시오.