스크립트의 특정 지점 source
에서 구성 파일을 사용한 후 여러 변수가 설정되고 그렇지 않은 경우 실행을 중지하여 누락 된 변수에 대해 사용자에게 알리고 싶습니다 . 나는 시도했다
for var in $one $two $three ; do
...
그러나 예를 들어 $two
설정되어 있지 않으면 루프가 절대 실행되지 않습니다 $two
. 다음으로 시도한 것은
for var in one two three ; do
if [ -n ${!var} ] ; then
echo "$var is set to ${!var}"
else
echo "$var is not set"
fi
done
그러나 2를 설정하지 않으면 "2가 설정되지 않았습니다"대신 "2가 설정되었습니다"라는 메시지가 계속 표시됩니다.
모든 필수 변수가 설정되었는지 어떻게 확인할 수 있습니까?
업데이트 / 솔루션 : "set"과 "set, but empty"사이에 차이가 있음을 알고 있습니다. 이제 /programming//a/16753536/3456281 및이 질문에 대한 답변 덕분에 다음을 사용합니다.
if [ -n "${!var:-}" ] ; then
따라서 var
설정되어 있지만 비어 있으면 여전히 유효하지 않은 것으로 간주됩니다.
set -u
스크립트의 시작 부분에 추가 하여 설정되지 않은 변수가 사용될 때 즉시 종료 할 수도 있습니다 .