IFS가 설정되었다고 가정해도 안전합니까? [복사]

IFS가 설정되었다고 가정해도 안전합니까? [복사]

스크립트에 다음 코드가 표시됩니다.

OLD_IFS="$IFS"
IFS='something-special'
# code that needs the special IFS
# ...
IFS="$OLD_IFS"

스크립트 조각 앞에 설정되지 않은 경우 IFS스크립트는 이를 빈 문자열로 설정하며 비어 있음 IFS과 정의되지 않음 IFS은 다릅니다.

스크립트에서는 이것이 IFS항상 설정되어 있다고 가정할 수 있습니다. 이런 가정을 해도 안전할까요?

답변1

예, 이미 설정되어 있다고 가정하는 것이 안전합니다 IFS.

기본값은 IFS공백, 탭 및 줄 바꿈으로 구성된 문자열입니다. 이것은 요구 사항입니다POSIX 표준:

쉘은 호출될 때 로 설정되어야 합니다 IFS.<space> <tab> <newline>

bash기본 설정이 있는 셸 에서 printf '%q\n' "$IFS"기본값은 다음 IFS과 같습니다.

$' \t\n'

이것은안전하지 않음기본값이 있다고 가정하고 IFS, 필드 분할이 발생하지 않도록 확장자를 올바르게 인용하는 것이 중요합니다. 숫자가 포함 되면 어떤 일이 일어날지 생각해 보는 IFS것은 매우 흥미롭습니다 .

당신은 또한 볼 수 있습니다

관련 정보