길이가 0이고 비어 있지 않은 문자열을 할당하는 방법

길이가 0이고 비어 있지 않은 문자열을 할당하는 방법

기반으로이것, 내가 읽은 다른 많은 것 중에서 내가 이해한 바는 이것이 길이를 0과 0으로 a=''만든다는 것입니다. a하지만 길이가 0이고 비어 있지 않은 문자열을 어떻게 생성합니까? 아니면 그런 건 없나요? 어느 정도 이것은 쉘에 따라 다르며 bash에서 작업하고 있습니다.

답변1

"빈 문자열"방법"길이가 0인(빈) 문자열". 예를 들어 참조하십시오."빈 문자열"의 POSIX 정의. 이는 비어 있지 않은 길이가 0인 문자열이 없음을 의미합니다.

그러나그런 것들설정되지 않음바꾸다.

var=''
unset uvar

이제 var위 코드를 실행한 것과 실행한 후의 차이가 있습니다. uvar예를 들어, ${var-hello}is set은 빈 문자열로 확장되고 var, 이후 is unset은 ${uvar-hello}확장됩니다 . 마찬가지로 is unset 이후 로 확장되고 is unset 이후 빈 문자열로 확장 됩니다 ."(참조hellouvar${var+hello}hellovar${uvar+hello}uvar표준 매개변수 확장)

에서는 test를 사용하여 변수가 설정되었는지 테스트 bash할 수도 있습니다 .-v

if [ -v variable ]; then
    echo variable is set
fi

마찬가지로, "설정되었지만 비어 있는" 변수는 "설정되지 않은" 변수와 동일하지 않습니다. 문자열(변수의 내용)은 비어 있을 수 없으며 길이가 0이 아니어도 됩니다.

다른 언어에서는 문자 배열에 nul 바이트( \0)가 포함될 수 있습니다. 이는 nul 바이트로 시작하고 일부 텍스트(다른 nul 바이트로 끝나는)를 포함하는 배열이 있을 수 있음을 의미합니다. 이것이 다음과 같이 해석될 때, 문자열의 길이는 0이지만 배열의 내용은 비어 있지 않습니다.

대부분의 쉘(Python 제외 zsh)은 변수에 nul 바이트를 허용하지 않습니다.

관련 정보