저는 꽤 새로운 Linux 사용자이고 강좌용 스크립트를 작성하려고 합니다.
스크립트는 사용자가 사용자 이름을 입력할 수 있도록 허용해야 하며 해당 사용자 이름이 존재하는지 알려줍니다. 존재하면 해당 UID와 홈 디렉토리가 출력됩니다. 존재하지 않으면 "이 사용자가 존재하지 않습니다"가 출력됩니다.
이것은 지금까지 내 스크립트입니다.
#!/bin/bash
echo "Type in the username you'd like to lookup. Type quit to quit."
read username
if grep -c $username /etc/passwd; then
echo "The user '$username' exists! Posting information..."
id -u $username
eval echo $USER
else
echo "Sorry... I couldn't find the user '$username'."
fi
현재 몇 가지 사항을 알아내려고 노력 중입니다.
입력 종료를 실제로 스크립트에서 종료하도록 하려면 어떻게 해야 합니까? 실제로 echo $HOST
입력한 사용자 이름의 홈 디렉터리를 게시합니까, 아니면 현재 사용자의 홈 디렉터리만 게시합니까? 스크립트를 테스트하기 위해 시스템에 몇 가지 추가 계정을 생성했지만 홈 디렉터리는 매번 동일합니다.
예제 출력:
mamurphy@ubuntu:~$ ./user_lookup
Type in the username you'd like to lookup. Type quit to quit.
mamurphy
1
The user 'mamurphy' exists! Posting information...
1000
/home/mamurphy
mamurphy@ubuntu:~$ ./user_lookup
Type in the username you'd like to lookup. Type quit to quit.
moemam
2
The user 'moemam' exists! Posting information...
1001
/home/mamurphy
mamurphy@ubuntu:~$ ./user_lookup
Type in the username you'd like to lookup. Type quit to quit.
bob
0
Sorry... I couldn't find the user 'bob'.
답변1
$HOME
예당신의입력한 사용자의 홈 디렉터리가 아닌 홈 디렉터리입니다. 당신은 그것을 찾아야합니다 :
user=moemam
user_home=$(getent passwd "$user" | cut -d: -f6)
답변2
입력 종료를 실제로 스크립트에서 종료하도록 하려면 어떻게 해야 합니까?
이것은매우기본 예:
#!/bin/bash
echo "Type in the username you'd like to lookup. Type quit to quit."
read answer
if [[ "$answer" == "quit" ]]; then
exit 1
fi
if grep -q "$answer" /etc/passwd; then
id -u "$answer"
else
echo "User $answer not found"
exit 2
fi
exit 0
시험:
./readAns.sh
Type in the username you'd like to lookup. Type quit to quit.
quit
echo $?
1
./readAns.sh
Type in the username you'd like to lookup. Type quit to quit.
ntp
119
echo $?
0
./readAns.sh
Type in the username you'd like to lookup. Type quit to quit.
foo
User foo not found
echo $?
2