-z
아래 코드의 플래그는 무엇을 의미합니까?
if [ -z $TEST_PARAM ]; then
그러한 플래그 목록이 있습니까?
이와 같은 로고의 경우 ls -l
어디서 찾을 수 있는지 알고 있지만 단일 로고의 경우 이를 설명하는 웹사이트가 없습니다.
답변1
답변2
[
은 이 유틸리티의 또 다른 이름입니다 test
. 이들 사이의 유일한 차이점은 [
끝에 추가 매개변수가 필요하다는 것입니다. ]
대부분의 시스템에는 매뉴얼 페이지와 동일한 내용 [
의 매뉴얼 페이지 가 있습니다 test
.
[
대부분의 셸에는 기능이 내장되어 있으므로 test
매뉴얼 페이지에 설명된 정확한 기능은 셸에서 실제로 사용할 수 있는 기능과 약간 다를 수 있습니다. -z
그러나 이는 모든 구현에서 사용할 수 있는 표준 기능입니다. test
와 같은 연산자를 찾으려면 내장 함수에 대한 설명이나 조건식 섹션을 찾아보세요 -z
.
이 명령은 [ -z $TEST_PARAM ]
실제로 이어야 합니다 [ -z "$TEST_PARAM" ]
. 큰따옴표 밖의 변수 확장은 변수 확장보다 훨씬 더 많은 작업을 수행하기 때문입니다. 바라보다공백이나 기타 특수 문자 때문에 쉘 스크립트가 멈추는 이유는 무엇입니까?자세한 내용은. 따옴표가 없으면 값이 TEST_PARAM
단어로 분할되어 글로벌 패턴으로 확장됩니다. 대신 "$TEST_PARAM"
변수의 값으로 확장됩니다 TEST_PARAM
. then의 값이 TEST_PARAM
비어 있으면 $TEST_PARAM
0단어 목록으로 확장되므로 실행되는 명령은 입니다 [ -z ]
. 조건식을 표현하려면 단어 하나만 사용하세요. 단어가 비어 있지 않으면 조건이 true입니다. 이것은 -z
연산자가 아니라 비어 있지 않은 문자열입니다.
당신은 또한 볼 수 있습니다단일 또는 이중 괄호 사용 - bash
답변3
이는 "매개변수가 존재하지 않으면 다음을 수행하십시오"를 의미합니다.
다음을 통해 볼 수 있습니다:
$ ABC='1'
$
$ if [ -z $ABC ]; then echo "ABC"; # Nothing
fi;
$
$ if [ -z $XYZ ]; then echo "yes"; # echo "Yes"
fi;
yes
$
이를 사용하는 예는 내 .bashrc
file 에서 호출하는 것이지만 tmux
다음과 같이 재귀적으로 호출하는 것은 아닙니다.
[ -z $TMUX ] && export TERM=xterm-256color && exec tmux