사용자를 찾아야 하는데 해당 사용자가 시스템에 없으면 명령은 0이 아닌 반환 코드로 종료되어야 합니다. 에서 이 작업을 수행할 수 있지만 스크립트 bash
가 아닌 줄 명령으로 필요합니다 . bash
그게 가능합니까?
답변1
시스템에 사용자가 존재하는지 테스트하는 좋은 방법은 를 사용하는 것입니다 . getent
이 getent
유틸리티는 다양한 "데이터베이스"에서 다양한 정보를 반환할 수 있습니다 passwd
(예: 사용 가능한 로그인 쉘 내보내기).group
getent
사용자가 testuser
시스템에 있는지 테스트하려면 사용자의 항목을 요청 getent
하십시오 passwd
.
getent passwd testuser
passwd
성공하면 하나의 항목이 출력되고 종료 상태는 0이 됩니다 getent
. 실패하면 출력이 없고 종료 상태가 0이 아닙니다. 나는 이것이 당신이 요청한 명령이라고 믿습니다.
유틸리티에서 생성된 모든 출력을 삭제하고 if
다음과 같은 문에서 사용할 수 있습니다.
theuser=testuser
if getent passwd "$theuser" >/dev/null
then
printf 'The user "%s" exists\n' "$theuser"
else
printf 'The user "%s" does not exist\n' "$theuser"
fi
물론 /etc/passwd
일부 명령을 사용하여 파일을 직접 구문 분석할 수 있지만 grep
이는 오류가 발생하기 쉽고( getent
위에 표시된 사용법과 비교하여) 일부 형태의 디렉터리 서비스를 사용하는 시스템에서는 제대로 작동하지 않습니다.