여기서 -z 플래그는 무엇을 의미합니까?

여기서 -z 플래그는 무엇을 의미합니까?

-z아래 코드의 플래그는 무엇을 의미합니까?

if [ -z $TEST_PARAM ]; then

그러한 플래그 목록이 있습니까?

이와 같은 로고의 경우 ls -l어디서 찾을 수 있는지 알고 있지만 단일 로고의 경우 이를 설명하는 웹사이트가 없습니다.

답변1

-z STRING 방법:

STRING의 길이가 0입니다.

다음 명령을 사용하여 모든 목록을 볼 수 있습니다.man test.

[test실제로는 일반적으로 쉘에 의해 구현되지만 명령의 별칭입니다 . 그러나 아마도 하나는 있을 것입니다 /bin/[. 이 모든 -X테스트는 test.

답변2

[은 이 유틸리티의 또 다른 이름입니다 test. 이들 사이의 유일한 차이점은 [끝에 추가 매개변수가 필요하다는 것입니다. ]대부분의 시스템에는 매뉴얼 페이지와 동일한 내용 [의 매뉴얼 페이지 가 있습니다 test.

[대부분의 셸에는 기능이 내장되어 있으므로 test매뉴얼 페이지에 설명된 정확한 기능은 셸에서 실제로 사용할 수 있는 기능과 약간 다를 수 있습니다. -z그러나 이는 모든 구현에서 사용할 수 있는 표준 기능입니다. test와 같은 연산자를 찾으려면 내장 함수에 대한 설명이나 조건식 섹션을 찾아보세요 -z.

이 명령은 [ -z $TEST_PARAM ]실제로 이어야 합니다 [ -z "$TEST_PARAM" ]. 큰따옴표 밖의 변수 확장은 변수 확장보다 훨씬 더 많은 작업을 수행하기 때문입니다. 바라보다공백이나 기타 특수 문자 때문에 쉘 스크립트가 멈추는 이유는 무엇입니까?자세한 내용은. 따옴표가 없으면 값이 TEST_PARAM단어로 분할되어 글로벌 패턴으로 확장됩니다. 대신 "$TEST_PARAM"변수의 값으로 확장됩니다 TEST_PARAM. then의 값이 TEST_PARAM비어 있으면 $TEST_PARAM0단어 목록으로 확장되므로 실행되는 명령은 입니다 [ -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
$

이를 사용하는 예는 내 .bashrcfile 에서 호출하는 것이지만 tmux다음과 같이 재귀적으로 호출하는 것은 아닙니다.

[ -z $TMUX ] && export TERM=xterm-256color && exec tmux

관련 정보