나는 새로운 라인을 실행 echo
하려고 시도하고 다음 두 명령을 시도했다.
-
첫 번째 명령 :
echo $'Hello World\nThis is a new line'
응답:
Hello World This is a new line
-
두 번째 명령 :
echo $"Hello World\nThis is a new line"
응답:
Hello World\nThis is a new line
내 질문에 싸여 문자열의 차이 무엇이다 $' '
싸서 문자열 대 $" "
에서 bash
의이 echo
?
답변
여기 에 설명 된대로 구문 은 개행 $'string'
과 같이 마술 이스케이프 문자가 포함 된 C 스타일 문자열을 지정합니다 \n
. $"string"
마법의 탈출구가없는 I18N 확장 용입니다.
이것들은 더 일반적인 "string"
(약한 인용) 및 'string'
(강한 인용) 과 구별됩니다 .
답변
$
문자열의 시작 부분에서 :
echo $'Hello World\nThis is a new line'
이스케이프 시퀀스를 해석합니다.
배시 참조 설명서 [말한다]
$ ‘string’형식의 단어는 특별히 취급됩니다. ANSI C 표준에 지정된대로 백 슬래시 이스케이프 문자를 바꾸어 단어를 문자열로 확장합니다. ..
..
확장 된 결과는 달러 기호가없는 것처럼 작은 따옴표로 묶습니다.
그러나
echo $"Hello World\nThis is a new line"
완전히 다릅니다. 로케일 특정 번역에 대한 이 기사 는 다음과 같이 말합니다.
큰 따옴표로 묶은 문자열 앞에 달러 기호 ( ‘$’)가 있으면 문자열이 현재 로케일에 따라 변환됩니다. 현재 로케일이 C 또는 POSIX 인 경우 달러 기호는 무시됩니다. 문자열이 번역 및 교체되면 교체는 큰 따옴표로 묶습니다.
참고 : IIRC 모두 $'string'
와 $"string"
다른 조개들 지원을 찾을 수 없습니다. 다른 쉘의 사람들은 호기심을 가지고 그것을 볼뿐만 아니라 스크립트 이식성을 피할 수 있는지에 대해 토론합니다.