![Bash는 모든 환경 변수가 변수 이름으로 선언되었는지 확인합니다.](https://linux55.com/image/119891/Bash%EB%8A%94%20%EB%AA%A8%EB%93%A0%20%ED%99%98%EA%B2%BD%20%EB%B3%80%EC%88%98%EA%B0%80%20%EB%B3%80%EC%88%98%20%EC%9D%B4%EB%A6%84%EC%9C%BC%EB%A1%9C%20%EC%84%A0%EC%96%B8%EB%90%98%EC%97%88%EB%8A%94%EC%A7%80%20%ED%99%95%EC%9D%B8%ED%95%A9%EB%8B%88%EB%8B%A4..png)
아래 스크립트에 문제가 있습니다. 해당 이름으로 설정된 변수가 없는 경우에만 종료되어야 합니다.
#!/bin/bash
set -e
echo 'START: env_vars_config'
required_var(){
VARIABLE=$1
echo "detecting if $VARIABLE exists"
echo ${!VARIABLE}
if [ -z ${!VARIABLE}+x ]; then
echo "${VARIABLE} was defined"
else
echo "Need to set environment var $VARIABLE" && exit 1;
fi
}
# these are required variables to deploy
required_var MONGO_URL
required_var AWS_REGION
required_var AUTOSCALING_GROUP_NAME
required_var LATEST_STABLE_COMMIT
required_var ENV_FILE
required_var DEPLOY_FILE
required_var POSTMAN_ENVIRONMENT_UID
required_var POSTMAN_COLLECTION_UID
required_var POSTMAN_API_KEY
required_var MANDRILL_KEY
required_var SERVER_SECRET
required_var S3_BUCKET
required_var ELASTIC_URL
required_var ELASTIC_PASSWORD
required_var ELASTIC_PREFIX
echo 'END: env_vars_config'
이제 이 스크립트는 항상 첫 번째 검사에서 종료되지만 MONGO_URL
이것이 변수 세트이고 문자열이라는 것을 알고 있습니다.
- 수표는 어떻게
unset
생겼나요? - 수표는 어떻게
unset
생겼나요empty string
?
안정적인
질문 2개, 먼저 +
if 문 끝에 있는 기호의 철자 오류입니다. 둘째, if 문의 순서를 반대로 했습니다.
if [ -z "${!VARIABLE}" ]; then
echo "Need to set environment var $VARIABLE" && exit 1;
else
echo "${VARIABLE} was defined"
fi
답변1
문제는 다음과 같습니다
if [ -z ${!VARIABLE}+x ]; then
echo "${VARIABLE} was defined"
else
echo "Need to set environment var $VARIABLE" && exit 1;
fi
-z
문자열이 비어 있으면 '문자열'은 참입니다.
+x
오타인가요? 그럴 필요는 없습니다.
근무 조건:
if [ -z "${!VARIABLE}" ]; then
echo "Need to set environment var $VARIABLE" && exit 1;
else
echo "${VARIABLE} was defined"
fi