누군가가 나를 도울 수 있는지 궁금합니다.
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에 의해 표준화되어 있으므로 .-z
test
[
bash
bash
bash
bash
대화형 세션에 있는 경우 다음을 입력하여 이러한 유틸리티의 내장 변형에 대한 설명서를 얻을 수 있습니다 . (이 역시 가능하지만 텍스트는 설명서만 참조합니다.)help test
help [
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
또한보십시오: