따옴표가 있는 에코 개행

따옴표가 있는 에코 개행

을 위한:

$hello="hello
> world"

echo개행 문자가 인쇄되지 않는 이유는 무엇입니까 ?

echo -e $hello

하지만 따옴표를 추가하면 $hello괜찮습니다.

$ echo "$hello"
hello
world

ANSI-C 인용 때문인가요? echo -e내가 입력한 개행 문자가 해석되어서 는 안 되나요 ?

답변1

매뉴얼 페이지 에서는 bash변수 내용에 따라 단어 분리가 수행되는 방법을 설명합니다 IFS.

분사

쉘은 단어 분할을 위해 큰따옴표 안에 표시되지 않는 인수 확장, 명령 대체 및 산술 확장의 결과를 스캔합니다.

쉘은 각 문자를 IFS구분 기호로 처리하고 이러한 문자를 필드 종결자로 사용하여 다른 확장 결과를 단어로 분할합니다. 설정 되지 않거나 해당 값이 기본값 IFS인 경우 이전 확장 결과의 시작과 끝 부분에 있는 , 및 의 시퀀스는 무시 되고 시작이나 끝이 아닌 IFS 문자 시퀀스는 단어를 구분하는 데 사용됩니다 . 기본값이 아닌 값을 사용하면 공백 문자가 값 ( 공백 문자) 내에 있는 한 단어의 시작과 끝 부분에 있는 공백과 탭 시퀀스는 무시됩니다. 공백이 아닌 문자 와 인접한 공백 문자는 필드를 구분합니다. 공백 문자 시퀀스 도 구분 기호로 간주됩니다. 값이 비어 있으면 단어 분할이 발생하지 않습니다.<space><tab><newline><space><tab><newline>IFSIFSIFSIFSIFSIFSIFSIFS

명시적으로 빈 매개변수( ""또는)가 유지됩니다. ''값이 없는 매개변수 확장으로 인해 암시적으로 인용되지 않은 null 매개변수는 제거됩니다. 값이 없는 매개변수를 큰따옴표로 확장하면 빈 매개변수가 생성되고 유지됩니다.

확장이 발생하지 않으면 분할이 수행되지 않습니다.

bash변수에 큰따옴표가 없으면 변수는 단어 분할이 되어 helloworld개의 다른 매개변수가 됩니다 echo. echo매개변수 사이에 공백을 두십시오.

관련 정보