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

関連情報