변수 확장에 아무것도 표시되지 않는 이유는 무엇입니까?

변수 확장에 아무것도 표시되지 않는 이유는 무엇입니까?

다음과 같은 경우 $IFS가 결과를 생성하지 않는 이유는 무엇입니까?

$ echo $IFS

하지만

$ printf '%q\n' "$IFS"
$' \t\n'

$ echo "$IFS" | od -bc
0000000 040 011 012 012
             \t  \n  \n
0000004

답변1

존재하다:

echo $IFS

다음을 제외한 모든 Bourne 유사 쉘에서 glob+split 연산자의 영향을 받는 큰따옴표로 묶인 변수가 없습니다 zsh.

echo glob(split($IFS))

문자 IFS자체는 분할에 사용되므로 $IFS확장이 비어 있고 빈 줄만 표시됩니다 echo.

큰따옴표를 사용하면 "$IFS"의 내용이 IFS그대로 echo에 전달되고 의 기본값인 공백, 탭 및 줄바꿈이 표시됩니다 IFS.


%q명령 지시문 printf은 의 확장으로 ksh, 셸 입력으로 재사용할 수 있는 형식으로 문자열을 출력하지만 셸 변수의 확장에는 영향을 주지 않습니다.bashzsh

관련 정보