저는 (정적 언어를 사용하여) tcsh 스크립트를 동적으로 생성하고 있습니다. 몇 가지 명령이 포함된 섹션이 있습니다 <add-command-here>
. 나하고 싶어:
echo <add-command-here>
저는 <add-command-here>
그냥 명령어를 입력했습니다. 명령은 있는 그대로 인쇄되어야 하며 평가되지 않아야 합니다. 예를 들어 env가 포함되어 있으면 실제 경로 대신 $PWD
인쇄하고 싶습니다 . $PWD
나는 그것을 작은 따옴표로 묶는 것을 생각했습니다.
echo '<add-command-here>'
그러나 명령에 이미 따옴표가 있으면 작동하지 않습니다.여기그것은 말한다:
작은따옴표 안에는 작은따옴표가 포함될 수 없습니다.
또한 큰따옴표는 여전히 계산되고 명령에 이미 큰따옴표가 포함된 경우 동일한 문제가 발생하므로 큰따옴표를 사용할 수 없습니다.
일부 테스트:
main.py --help
main.py -option1 $PWD
main.py -option1 '$PWD'
'main.py -option1 $PWD'
main.py -option1 "$PWD"
main.py -option1 "PWD 'hi'"
main.py -option1 "PWD \'hi\'"
나는 이 모든 것을 있는 그대로 인쇄하고 싶습니다. 즉, 입력이 이면 X
출력은 X
. 모든 특수 문자를 이스케이프 처리해야 할 것 같습니다. 저는 그것을 직접 구현하겠습니다. (그냥 블랙박스라고 생각하면 됩니다. 이 기능을 수행하는 함수입니다.) 내 질문은 전략에만 초점을 맞추고 있습니다. 여기서 이 문제를 해결하는 올바른 방법은 무엇입니까?