ksh93에서는 다음과 같이 모든 변수를 설정 해제할 수 있습니다.
$ var=value; echo "$<${var+set}"
<set>
$ unset var; echo "<${var+set}>"
<>
그러나 IFS
동일한 방식으로 작동하지 않습니다.
$ unset IFS; echo "<${IFS+set}>"
set
제가 테스트한 다른 쉘에서는 이런 일이 발생하지 않습니다. 이것은 버그일 수도 있지만 제가 보기에는 의도적인 것 같습니다.
그러나 문서화된 위치(있는 경우)를 찾을 수 없습니다.
또는 :+
null 값으로 확장하는 데만 사용합니다.
$ var="value"; echo "<${var:+set}> <${var+set}>"
<set> <set>
$ var="" ; echo "<${var:+set}> <${var+set}>"
<> <set>
$ unset var ; echo "<${var:+set}> <${var+set}>"
<> <>
그게 문제가 아니예요.
IFS에만 해당:
IFS="value"; echo "<${IFS:+set}> <${IFS+set}>"
<set> <set>
IFS="" ; echo "<${IFS:+set}> <${IFS+set}>"
<> <set>
unset IFS ; echo "<${IFS:+set}> <${IFS+set}>"
<> <set> <------------------- should be <> <>
버전 정보:
ksh -c 'echo "$KSH_VERSION"'
Version AJM 93u+ 2012-08-01