명령 매개변수를 사용하여 셸에 전달할 문자열을 올바르게 이스케이프하는 방법

명령 매개변수를 사용하여 셸에 전달할 문자열을 올바르게 이스케이프하는 방법

임의의 명령을 올바르게 이스케이프하는 방법은 무엇입니까?


예를 들어:

sudo -u chris sh -c 'echo "\"leftright\""'

위 내용의 메아리:

"leftright"

어떻게 에코할까요?

"left'right"

다음을 시도했는데 작동할 것으로 예상했지만 작동하지 않았습니다.

sudo -u chris sh -c 'echo "\"left\'right\""'

어떻게 해석되는지 잘 모르겠습니다.

답변1

sudo -u chris sh -c 'echo "\"left'\''right\""'

답변2

 sh -c 'echo "\"left'"'"'right\""'

또는

 sh -c 'echo "\"left'\''right\""'

작동합니다.

위의 사항 중 하나라도 통과됩니다.

 echo "\"left'right\""

뒤쪽에 -c.

작은따옴표로 묶인 문자열 안에 있으면 문자열을 닫는 것 외에는 이스케이프가 없습니다.

작은 따옴표를 전달하려면 다음을 사용할 수 있습니다.

 "'"

또는

 \'

.

쉘은 입력 필드 구분 기호(일반적으로 공백) 없이 인접한 인수를 연결합니다.

관련 정보