2016-04-13 20 views
0

Ich möchte sagen, ob ein Benutzer angemeldet ist oder nicht.Wie kann ich feststellen, ob ein Benutzer angemeldet ist?

if [ "$(who | grep -wq "$1")" == 0 ] 
echo $1 "is logged in" 

"$(who | grep -w "$1")" ist gleich 0, wenn grep $ 1 (a username) in der Liste (der) findet. Wenn der Benutzer also in der Liste ist, ist er oder sie eingeloggt. Was ist falsch daran?

Antwort

3

grep nicht Drucken 0, das ist, was Ihr Skript überprüft. Sein Exit-Code ist 0. den Exit-Code Um zu überprüfen, es ist einfach:

if who | grep -wq "$1"; then 
    echo "$1 is logged in" 
fi 
0

In der bash $? verwendet wird, um den Exit-Code zu speichern. Sie können es verwenden, um den Exit-Code von Grep zu überprüfen.

who | grep -wq "$1" 
if [ $? -eq 0 ]; then 
    echo "$1 is logged in" 
fi 
Verwandte Themen