다음과 같은 경우 $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
, 셸 입력으로 재사용할 수 있는 형식으로 문자열을 출력하지만 셸 변수의 확장에는 영향을 주지 않습니다.bash
zsh