쉘 스크립팅 : if

다음 줄이있는 쉘 스크립트가 있습니다. if [ -z "$xyz" ]if [ -n "$abc" ]이지만 그 목적이 무엇인지 잘 모르겠습니다. 누구든지 설명해 주시겠습니까?

답변

bash “연산자에 대한 아주 좋은 참조를 찾을 수 있습니다. 여기 . 다른 셸을 사용하는 경우 <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 

댓글

  • -n 작업을 수행하는 데 문제가있는 경우 웹에서 잘못된 가이드를 따르고 있기 때문일 수 있습니다 (예 : GeeksforGeeks 또는 TutorialsPoint ).이 답변과 여기 링크 된 가이드는 올바르게 인용합니다. 인용문없이 -n를 사용하면 ' 이어도 비어 있지 않다는 메시지가 표시됩니다! @terdon, 감사합니다!

답변

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

Comments

  • man [GNU bash, 버전 4.1.2 (1) -release (x86_64-)에서 작동하지 않습니다. ' redhat-linux-gnu). 그러나 사람 테스트의 경우 +1입니다.
  • 참고 man test (항상?)는 외부 프로그램 버전에 대한 man 페이지를 제공합니다 (GNU-coreutils 버전의 경우 최소한) 일부 (IME 대부분) 셸에 다를 수있는 기본 제공 버전이 있음을 명시 적으로 경고합니다.

답변

terdon “의 답변 을 확장하기 위해 Unix / Linux-자습서 포인트의 쉘 기본 연산자 에는 파일 관련 연산자 (및 기타 유용한 연산자)도 포함됩니다.

-b file Checks if file is a block special file; if yes, then the condition becomes true. [ -b $file ] is false. -c file Checks if file is a character special file; if yes, then the condition becomes true. [ -c $file ] is false. -d file Checks if file is a directory; if yes, then the condition becomes true. [ -d $file ] is not true. -f file Checks if file is an ordinary file as opposed to a directory or special file; if yes, then the condition becomes true. [ -f $file ] is true. -g file Checks if file has its set group ID (SGID) bit set; if yes, then the condition becomes true. [ -g $file ] is false. -k file Checks if file has its sticky bit set; if yes, then the condition becomes true. [ -k $file ] is false. -p file Checks if file is a named pipe; if yes, then the condition becomes true. [ -p $file ] is false. -t file Checks if file descriptor is open and associated with a terminal; if yes, then the condition becomes true. [ -t $file ] is false. -u file Checks if file has its Set User ID (SUID) bit set; if yes, then the condition becomes true. [ -u $file ] is false. -r file Checks if file is readable; if yes, then the condition becomes true. [ -r $file ] is true. -w file Checks if file is writable; if yes, then the condition becomes true. [ -w $file ] is true. -x file Checks if file is executable; if yes, then the condition becomes true. [ -x $file ] is true. -s file Checks if file has size greater than 0; if yes, then condition becomes true. [ -s $file ] is true. -e file Checks if file exists; is true even if file is a directory but exists. [ -e $file ] is true. 

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다