programing

환경변수가 존재하는지 확인하고 그 값을 얻는 방법

powerit 2023. 4. 23. 11:35
반응형

환경변수가 존재하는지 확인하고 그 값을 얻는 방법

나는 조개 대본을 쓰고 있다.이 셸 스크립트에서는 기본값 또는 환경변수 값을 사용하는 변수가 있습니다.단, 환경변수가 존재할 필요는 없습니다.

예를 들어 스크립트를 실행하기 전에 다음 작업을 수행한다고 가정합니다.

export DEPLOY_ENV=dev

이 환경변수를 검색하도록 스크립트에 지시하고 스크립트 내의 변수에 값을 저장하려면 어떻게 해야 합니까?또한 이 환경변수가 존재하지 않는 경우 기본변수를 저장하도록 스크립트에 지시하려면 어떻게 해야 합니까?

[ -z "${DEPLOY_ENV}" ]체크할지를 확인합니다.DEPLOY_ENV길이가 0과 같습니다.따라서 다음과 같이 실행할 수 있습니다.

if [[ -z "${DEPLOY_ENV}" ]]; then
  MY_SCRIPT_VARIABLE="Some default value because DEPLOY_ENV is undefined"
else
  MY_SCRIPT_VARIABLE="${DEPLOY_ENV}"
fi

# or using a short-hand version

[[ -z "${DEPLOY_ENV}" ]] && MyVar='default' || MyVar="${DEPLOY_ENV}"

# or even shorter use

MyVar="${DEPLOY_ENV:-default_value}"

파라미터 확장을 사용할 수 있습니다.

${파라미터:-word}

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

그럼 이렇게 해 보세요.

var=${DEPLOY_ENV:-default_value}

${parameter-word} 형식도 있습니다.이 형식은 파라미터가 설정되지 않은 경우(늘일 경우)에만 기본값을 대체합니다.

두 가지 차이점을 시연하려면:

$ unset DEPLOY_ENV
$ echo "'${DEPLOY_ENV:-default_value}' '${DEPLOY_ENV-default_value}'"
'default_value' 'default_value'
$ DEPLOY_ENV=
$ echo "'${DEPLOY_ENV:-default_value}' '${DEPLOY_ENV-default_value}'"
'default_value' ''

설정되지 않은 변수 또는 값이 비어 있는 변수 간의 차이를 신경 쓰지 않는 경우 default-value 파라미터 확장을 사용할 수 있습니다.

foo=${DEPLOY_ENV:-default}

만약 당신이 그 차이를 신경 쓴다면, 대장을 떨어뜨려라.

foo=${DEPLOY_ENV-default}

를 사용할 수도 있습니다.-v연산자를 사용하여 매개 변수가 설정되었는지 여부를 명시적으로 테스트할 수 있습니다.

if [[ ! -v DEPLOY_ENV ]]; then
    echo "DEPLOY_ENV is not set"
elif [[ -z "$DEPLOY_ENV" ]]; then
    echo "DEPLOY_ENV is set to the empty string"
else
    echo "DEPLOY_ENV has the value: $DEPLOY_ENV"
fi

스크립트에서는 환경변수와 변수의 차이는 없습니다.환경변수는 스크립트가 호출되기 전에 스크립트 외부에 정의되어 있을 뿐입니다.스크립트의 관점에서 변수는 변수입니다.

변수가 정의되어 있는지 여부를 확인할 수 있습니다.

if [ -z "$a" ]
then
    echo "not defined"
else 
    echo "defined"
fi

정의되지 않은 변수의 기본값을 설정하거나 다른 작업을 수행합니다.

-z는 제로렝스(빈) 문자열을 체크합니다.man bash[ Conditional EXPRESIONS ]섹션을 찾습니다.

를 사용할 수도 있습니다.set -u정의되지 않은 변수가 발견되면 스크립트의 첫머리에서 실패하도록 합니다.정의되지 않은 변수가 창의적인 방법으로 중단되는 것을 방지하려면.

NEW_VAR=""
if [[ ${ENV_VAR} && ${ENV_VAR-x} ]]; then
  NEW_VAR=${ENV_VAR}
else
  NEW_VAR="new value"
fi

언급URL : https://stackoverflow.com/questions/39296472/how-to-check-if-an-environment-variable-exists-and-get-its-value

반응형