Tentando descobrir o script do Linux

0

Sou um usuário de Linux bastante novo e estou tentando montar um script para uma aula.

O script deve permitir que um usuário digite um nome de usuário, e ele dirá se o nome de usuário existe ou não. Em caso afirmativo, imprima seu UID e seu diretório inicial e, se não, a saída "Este usuário não existe".

Este é meu script até agora:

#!/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

Atualmente, estou tentando descobrir algumas coisas:

Como posso fazer isso, então a digitação encerra o script? Será que echo $HOST postar o diretório home para o nome de usuário colocado, ou apenas colocar o diretório home do usuário atual? Eu criei algumas contas extras no meu sistema para testar o script, mas o diretório inicial é o mesmo o tempo todo.

Exemplo de saídas:

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'.
    
por Polansi 16.11.2016 / 19:09

2 respostas

1

$HOME é seu diretório home, não o homedir do usuário que você digitou. É necessário procurar:

user=moemam
user_home=$(getent passwd "$user" | cut -d: -f6)
    
por 16.11.2016 / 19:32
1

How can I make it so typing quit actually quits the script?

Veja um exemplo básico muito :

#!/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

Teste:

./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
    
por 16.11.2016 / 19:39