Linux 스크립트를 알아내십시오.

Linux 스크립트를 알아내십시오.

저는 꽤 새로운 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

관련 정보