bash 명령을 찾을 수 없습니다

bash 명령을 찾을 수 없습니다

누군가가 나를 도울 수 있는지 궁금합니다.

if [ -z $1 ]; then                                                                                                                                                                                                                                                             
  user=$(whoami)                                                                                                                                                                                                                                                         
else                                                                                                                                                                                                                                                                           
  if [ ! -d "/home/$1" ]; then                                                                                                                                                                                                                                           
    echo "Requested $1 user home directory doesn't exist."                                                                                                                                                                                                         
    exit 1                                                                                                                                                                                                                                                         
  fi                                                                                                                                                                                                                                                                     
  user=$1                                                                                                                                                                                                                                                                
fi 

저는 일부 bash 명령을 작업 중이었고 두 가지 명령을 보았습니다: -z-d. 나는 그들이 무엇을 하는지 알고 있습니다(빈 변수를 먼저 확인하고, 두 번째로 디렉토리가 존재하는지 확인합니다). 내 질문은 이러한 명령에 대한 설명을 찾는 방법입니다(ig man 페이지 -d/-z). if-else 문에만 사용할 수 있나요?

답변1

명령이 아니라 -d및 유틸리티의 옵션입니다. 이러한 유틸리티는 설명서에 내장되어 문서화되어 있습니다. 이러한 유틸리티와 플래그도 POSIX에 의해 표준화되어 있으므로 .-ztest[bashbashbash

bash대화형 세션에 있는 경우 다음을 입력하여 이러한 유틸리티의 내장 변형에 대한 설명서를 얻을 수 있습니다 . (이 역시 가능하지만 텍스트는 설명서만 참조합니다.)help testhelp [test

man test작동 해야 man [합니다. 이 설명서에서는 다음을 설명합니다.외부유틸리티는 아마도 에서 기본적으로 사용하는 유틸리티 대신 /bin/test및 입니다 ./bin/[bash

예를 들어,

! test -z "$dir" && test -d "$dir" && printf '%s is a directory' "$dir"

정확히 같다

! [ -z "$dir" ] && [ -d "$dir" ] && printf '%s is a directory' "$dir"

또는 원하는 경우

if ! test -z "$dir" && test -d "$dir"; then
    printf '%s is a directory' "$dir"
fi

그리고

if ! [ -z "$dir" ] && [ -d "$dir" ]; then
    printf '%s is a directory' "$dir"
fi

( 아마도 or ! [ -z "$dir" ]로 더 일반적으로 작성될 것입니다 . 위의 테스트는 질문에서 언급되었기 때문에 사용했으며 빈 문자열에 대한 테스트는 어쨌든 실패합니다.)[ ! -z "$dir" ][ -n "$dir" ]-z-d

또한보십시오:

관련 정보