매개 변수가 설정된 경우 null을 할당하거나 Bash 변수 할당을 취소하는 방법은 무엇입니까?

매개 변수가 설정된 경우 null을 할당하거나 Bash 변수 할당을 취소하는 방법은 무엇입니까?

TLS를 사용하지 않는 경우에는 변수를 USE_TLS설정하지 않거나 비어 있어야 하지만, TLS를 시행해야 하는 경우에는 변수를 설정해야 합니다. 기본적으로(즉, 설정) 적용하도록 요구하지만 설정할 다른 변수를 지정하는 경우에는 적용하지 않습니다.null1do_not_use_tls1

# this assigns null or empty
USE_TLS=${do_not_use_tls:-""}

# this assigns empty or null
USE_TLS=${do_not_use_tls:+""}

USE_TLS설정 여부에 관계없이 이를 설정하지만 그렇지 않으면 값을 할당하지 않는 재정의가 있습니까 ? 다음을 시도하고 있지만 작동하지 않습니다.do_not_use_tlsnull

USE_TLS=${do_not_use_tls:+${do_not_use_tls:-""}}

USE_TLS=${do_not_use_tls:-${do_not_use_tls:+null}}

답변1

당신이 찾고 있는 것은 다음과 같습니다.

unset -v USE_TLS
[ "${do_not_use_tls-}" = 1 ] || USE_TLS=1

먼저 USE_TLS변수의 설정을 해제한 다음(이전 값이 없다고 확신하는 경우 꼭 필요한 것은 아닙니다) is 를 1제외하고 설정합니다 .$do_not_use_tls1

아니면 좀 더 구체적으로 말하면,

if [ "${do_not_use_tls-}" = 1 ]; then
    unset -v USE_TLS
else
    USE_TLS=1
fi

"${do_not_use_tls-}"대신 "$do_not_use_tls"aka가 적용되는 경우 오류를 생성하지 않기 위해 사용합니다 .set -uset -o nounset

USE_TLS표시한 예제( 값이 변수의 일부 확장인 할당 형식임)를 실제로 사용할 수는 없습니다. 왜냐하면 그것이 인지 확인하려면 do_not_use_tls테스트 값이 필요하기 때문입니다 .$do_not_use_tls1

관련 정보