쉘 스크립팅 : if와 함께 -z 및 -n 옵션


53

나는 우리가 다음과 같은 라인을 가지고 쉘 스크립트가 if [ -z "$xyz" ]와를 if [ -n "$abc" ], 그러나 나는 그들의 목적이 무엇인지 모르겠습니다. 누구든지 설명해 주시겠습니까?

답변:


63

bash의 연산자에 대한 아주 좋은 참조는 here 입니다. 다른 쉘을 사용하는 경우 검색 만하면 <my shell> operators필요한 모든 것을 찾을 수 있습니다. 특별한 경우에는 다음을 사용합니다.

-n
   string is not null.

-z
  string is null, that is, has zero length

설명하기 위해 :

$ foo="bar";
$ [ -n "$foo" ] && echo "foo is not null"
foo is not null
$ [ -z "$foo" ] && echo "foo is null"
$ foo="";
$ [ -n "$foo" ] && echo "foo is not null"
$ [ -z "$foo" ] && echo "foo is null"
foo is null

3

man test또는 man [명령을 테스트하는 모든 옵션을 제공합니다. 이 경우, -n은 $ abc의 내용이 길이가 0이 아닌지 테스트하고 -z는 $ xyz의 내용이 길이가 0 인 문자열인지 테스트합니다.


man [GNU GNU bash, 버전 4.1.2 (1)-릴리스 (x86_64-redhat-linux-gnu)에서 작동하지 않습니다. 그러나 사람 테스트의 경우 +1입니다.
Andrew lorien

1
참고 man test(항상?)는 외부 프로그램 버전에 대한 매뉴얼 페이지를 제공합니다. (최소한 GNU-coreutils 버전의 경우) 일부 (IME 대부분) 쉘에는 내장 버전이 다를 수 있음을 명시 적으로 경고합니다.
dave_thompson_085
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.