문자열을 이스케이프 처리 된 것으로 변환하는 bash 명령이 필요합니다. 예를 들면 다음과 같습니다.
echo "hello\world" | escape | someprog
탈출 명령은 어디 있습니다 "hello\world"
로 "hello\\\world"
. 그런 다음 someprog는 "hello\\world"
예상대로 사용할 수 있습니다 . 물론 이것은 제가 실제로하게 될 일의 단순화 된 예입니다.
문자열을 이스케이프 처리 된 것으로 변환하는 bash 명령이 필요합니다. 예를 들면 다음과 같습니다.
echo "hello\world" | escape | someprog
탈출 명령은 어디 있습니다 "hello\world"
로 "hello\\\world"
. 그런 다음 someprog는 "hello\\world"
예상대로 사용할 수 있습니다 . 물론 이것은 제가 실제로하게 될 일의 단순화 된 예입니다.
답변:
Bash에서 :
printf "%q" "hello\world" | someprog
예를 들면 :
printf "%q" "hello\world"
hello\\world
이것은 변수를 통해서도 사용할 수 있습니다.
printf -v var "%q\n" "hello\world"
echo "$var"
hello\\world
a='abc$def":'; printf '%q\n' "$a"
결과 abc\$def\":
(달러 기호가 이스케이프 됨). 이것은 Bash 4.3입니다 (Bash 3.2에서도 동일한 결과를 얻었습니다). 어떤 버전을 사용하고 있습니까?
printf "%q" 'he$l&lo\world'
printf '%q\n' text
는 텍스트를 bash
형식으로 (및 현재 로케일에 대해) someprog
인용 하므로 OP의 경우 와 똑같은 인용 구문 bash
이있을 가능성이 거의없는 경우에만 작동 합니다 .
perl을 사용하여 다양한 문자를 바꿀 수 있습니다. 예를 들면 다음과 같습니다.
$ echo "Hello\ world" | perl -pe 's/\\/\\\\/g'
Hello\\ world
이스케이프의 특성에 따라 여러 호출을 연결하여 적절한 문자를 이스케이프 할 수 있습니다.