비어 있거나 할당되지 않았거나 오류가 있는 경우 BASH 변수에 값을 할당하는 방법은 무엇입니까? [복사]

비어 있거나 할당되지 않았거나 오류가 있는 경우 BASH 변수에 값을 할당하는 방법은 무엇입니까? [복사]

나는 이 JS 과제와 동등한 것을 찾고 있습니다.

FOO = FOO || "I must have been falsey!";

답변1

어느 하나이러한 확장과제를 완료하려는 특정 시간에 따라 찾고 있는 것이 될 수 있습니다.

콜론을 생략하면 설정되지 않은 매개변수만 테스트됩니다. [...]

${parameter:-word}

인수가 설정되지 않거나 비어 있으면 단어의 확장이 대체됩니다. 그렇지 않으면 매개변수 값이 대체됩니다.

${parameter:=word}

인수가 설정되지 않거나 비어 있으면 단어의 확장이 인수에 할당됩니다. 그런 다음 매개변수의 값을 바꿉니다. 위치 매개변수와 특수 매개변수는 이 방식으로 할당할 수 없습니다.

처음 사용할 때만 기본값을 설정하려면 다음을 수행하십시오.

some-command "${FOO:=default value}"
other-command "$FOO"  # both use "default value" if FOO was null/unset

이를 명시적으로 만들고 싶다면 다음과 같이 하세요.

FOO="${FOO:-default value}"
some-command "${FOO}"

답변2

"가짜"가 무엇을 의미하는지에 따라 다릅니다. Bash에는 특별한 값 True이나 가 없으므로 False"false" 값은 0뿐입니다. 그런 다음 변수를 빈 문자열로 설정하거나 설정 해제할 수 있습니다.

  1. 변수 가 설정되지 않았거나 NULL( ) 또는 빈 문자열로 설정된 경우 \0변수를 설정합니다 .

     ## unset variable
     $ foo=${foo:="I must have been unset empty or null!"}
     $ echo "$foo"
     I must have been unset, empty, or null!
    
     $ foo="" ## set to the empty string  
     $ foo=${foo:="I must have been unset, empty, or null!"}
     $ echo "$foo"
     I must have been unset, empty, or null!
    
  2. 현재 값이 false( 0)인 경우 변수를 설정합니다.

     $ foo=0
     $ (($foo)) ||  foo="I must have been unset, empty, or null!"
     $ echo "$foo"
     I must have been unset, empty, or null!
    

관련 정보