디버깅 및 오류 방지를 위한 셸 옵션 사용
셸 옵션은 스크립트 디버깅 및 일반적인 오류 방지에 특히 유용합니다. 이 단계에서는 디버깅을 위한 xtrace 옵션과 오류 방지를 위한 nounset 옵션, 두 가지 중요한 옵션을 살펴보겠습니다.
디버깅을 위한 xtrace 옵션
xtrace 옵션 (디버그 모드라고도 함) 은 각 명령과 확장된 인수를 실행될 때 표시합니다. 이는 셸 스크립트를 디버깅할 때 매우 유용합니다.
xtrace 옵션을 활성화해 보겠습니다.
set -o xtrace
이제 명령을 실행하면 실행되기 전에 더하기 기호 (+) 가 앞에 붙어 터미널에 표시됩니다. 간단한 명령을 시도해 보겠습니다.
echo "Hello, World!"
출력에는 실행되는 명령과 결과가 모두 포함됩니다.
+ echo 'Hello, World!'
Hello, World!
변수를 사용하여 약간 더 복잡한 예제를 시도해 보겠습니다.
MY_VAR="Linux"
echo "I am using $MY_VAR"
출력은 변수가 어떻게 확장되는지 보여줍니다.
+ MY_VAR=Linux
+ echo 'I am using Linux'
I am using Linux
이 기능은 복잡한 스크립트나 명령에서 무슨 일이 일어나고 있는지 이해하려는 경우 매우 유용합니다.
더 이상 필요하지 않을 때 xtrace 옵션을 비활성화하려면 다음을 수행합니다.
set +o xtrace
오류 방지를 위한 nounset 옵션
nounset 옵션은 설정되지 않은 변수를 빈 문자열로 확장하는 대신 오류로 처리하여 오류를 방지하는 데 도움이 됩니다. 이는 오타 및 정의되지 않은 변수를 잡아내는 데 도움이 될 수 있습니다.
nounset 옵션을 활성화해 보겠습니다.
set -o nounset
이제 정의되지 않은 변수를 사용하려고 하면 셸은 자동으로 빈 값을 사용하는 대신 오류를 생성합니다. 이를 테스트해 보겠습니다.
echo "The value is: $UNDEFINED_VARIABLE"
다음과 유사한 오류 메시지가 표시됩니다.
bash: UNDEFINED_VARIABLE: unbound variable
이는 스크립트가 예상치 못한 빈 값으로 계속 실행되어 나중에 문제를 일으킬 수 있는 것보다 훨씬 좋습니다.
이 보호 기능을 비활성화하려면 다음을 수행합니다.
set +o nounset
이제 동일한 명령을 시도해도 오류가 발생하지 않지만 대신 빈 문자열이 사용됩니다.
echo "The value is: $UNDEFINED_VARIABLE"
출력:
The value is:
여러 옵션 결합
한 번에 여러 셸 옵션을 활성화할 수 있습니다. 예를 들어, xtrace와 nounset을 모두 활성화하려면 다음을 수행합니다.
set -o xtrace -o nounset
또는 약식 표기법을 사용합니다.
set -xu
많은 셸 옵션에는 -(활성화) 및 +(비활성화) 구문과 함께 사용할 수 있는 단일 문자 동등 항목이 있습니다. 예를 들어:
-x는 -o xtrace와 동일합니다.
-u는 -o nounset과 동일합니다.
-e는 -o errexit와 동일합니다.
셸 옵션의 현재 상태를 다시 확인합니다.
set -o
자신의 필요와 작업 스타일에 가장 적합한 셸 동작을 찾기 위해 다양한 옵션을 실험해 보십시오.