백틱 설명

백틱 설명

이 두 명령의 차이점이 무엇인지 알고 싶습니다.

echo ` echo `date` `

echo ` echo \`date\` `

\가 문자를 이스케이프하는 데 사용된다는 것을 알고 있지만 이 특정 맥락에서는 이해할 수 없습니다. 우리는 왜 사용하지 않는가?

echo \` echo \`date\` \` 

대신 ` 문자를 이스케이프 처리해야 한다면 어떻게 될까요?

답변1

$(cmd)중첩될 수 있는 다른 백틱 표현식을 사용할 수 있습니다 . 반면에 백틱 내부 매개변수를 변수로 생성하여 내부적으로 사용할 수 있습니다.

echo $(echo `date`)
echo $(echo $(date))

x=`date` echo `echo $x`

따옴표를 이스케이프 처리하지 않고 \`를 사용하면

echo $(echo )date$( )

쉘은 인수를 구문 분석하여 표현식의 인수를 평가하려고 시도합니다. 즉:

echo \` echo \`date\` \` 
argv[0]="echo", argv[1]="`", argv[2]="echo", argv[3]="`date`", argv[4]="`"

나는 당신이 이해할 수 있도록 다른 예를 남깁니다.

관련 정보