ich hoffe ja mal, ich poste hier nicht in die gnadenlos falsche Ecke, aber ich hätte da mal ne Frage, falls hier jemand zuliest, der sich mit der Bash gut auskennt.
Falls es sich hier doch um das absolut falsche Forum handelt: So wichtig ist der Thread wirklich nicht, also dann einfach ab in den Müll!
Ich habe angefangen mich etwas mit Shell Programmierung zu beschäftigen, weil Shells ja doch einer DER Vorteile von Linux Systemen gegenüber den Systemen aus Redmond sind.
Da ich klein anfangen will, schreibe ich erstmal kleine Scripte. Ich habe folgendes vor:
Seit meinem letzen System-Upgrade funktioniert der Befehl "xhost localhost" nicht mehr, um z.B. root das Recht zu geben, den X Server eines Users zu benutzen. Da der Befehl, der das jetzt bewirkt, mir etwas zu kryptisch war, hab ich mir gedacht, ich mach mir mal ein Scipt dazu.
Das Ganze sieht bis jetzt so aus:
Code: Alles auswählen
#!/bin/bash
XAUTHPATH=/usr/X11R6/bin/xauth
GREPPATH=/bin/grep
case "$1" in
"")
echo "Usage: hostx [current X user]";
;;
*)
if [ "`$XAUTHPATH merge ~$1/.Xauthority 2>&1 | $GREPPATH -i -e unable -e usage -e merge;`" ]; then
# following line for testing purposes
echo "`$XAUTHPATH merge ~$1/.Xauthority 2>&1 | $GREPPATH -i -e unable -e usage -e merge;`";
echo "User $1 not found";
else
echo "Hosted X for current user";
fi
;;
esac
Meine Frage lautet: Warum funktioniert das Script nicht, wenn ich einen gültigen Usernamen eingebe? Ich denke, wenn grep einen Leerstring zurückgibt (xauth ohne Fehlermeldung abgelaufen ist), sollte die IF Abfrage doch false liefern, oder nicht? Leider bekomme ich nie ein false zurück, weder bei einem gültigen Usernamen, noch bei einem ungültigen und das obwohl der echo Befehl mir anzeigt, dass der String leer ist.
Hat da jemand eine Ahnung was ich falsch mache?
Danke schonmal für etwaige Antworten und eine Entschuldigung, falls dieser Thread hier nicht angebracht ist.
Schöne Grüße,
Timo