$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)
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'.
$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)
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
Tags linux ubuntu scripting shell-script