Nice programing

Bash에서 작은 따옴표 문자열에서 작은 따옴표를 이스케이프하는 방법은 무엇입니까?

nicepro 2020. 11. 29. 12:18
반응형

Bash에서 작은 따옴표 문자열에서 작은 따옴표를 이스케이프하는 방법은 무엇입니까?


이렇게 Bash에 문자열을 표시하고 싶습니다.

I'm a student

물론 이렇게 할 수 있습니다

echo "I'm a student"

그러나 문자열 주위에 작은 따옴표를 사용하면서 이것을 수행하는 방법은 무엇입니까?


echo 'I\'m a student'

작동하지 않습니다. 그러나 다음은 작동합니다.

echo $'I\'m a student'

bash의 man 페이지에서 :

백 슬래시가 앞에있는 경우에도 작은 따옴표 사이에 작은 따옴표를 사용할 수 없습니다.
.... $ 'string'
형태의 단어는 특별히 취급됩니다. 이 단어는 ANSI C 표준에 지정된대로 백 슬래시 이스케이프 문자가 대체 된 문자열로 확장됩니다.


Glenn Jackman이 언급 한 "추악한"솔루션은 실제로 최상위 답변으로 나열되어야합니다. 그것은 잘 작동하고 실제로 어떤 상황에서는 아름답습니다.

'I'"'"'m a student'

이렇게하면 작은 따옴표가있는 문자열이 종료되고 작은 따옴표 I가 포함 된 큰 따옴표 문자열이 즉시 시작되고 다른 작은 따옴표 문자열이 시작됩니다. 그런 다음 Bash는 모든 연속 문자열을 하나로 연결합니다.

아름다운!


아래 예제는 이스케이프 된 작은 따옴표 \'가 기술적으로 두 개의 작은 따옴표 인수 사이에 있기 때문에 작동합니다.

echo 'I'\''m a student'

참고 URL : https://stackoverflow.com/questions/8254120/how-to-escape-a-single-quote-in-single-quote-string-in-bash

반응형