Ich habe ein Bash-Skript mit folgenden Inhalten:
#!/bin/bash -e
egrep "^username" /etc/passwd >/dev/null
if[ $? -eq 0 ]
then
echo "doesn't exist"
fi
Dieses Skript wird nicht ohne das -e ausgeführt. Was macht das -e
für dieses Skript? Und was macht der $?
in diesem Zusammenhang?
-e
ist dokumentiert unter set
.
if egrep -q "^username" /etc/passwd ; then echo "doesn't exist" ; fi
if
und [
. Dieses Skript funktioniert nicht mit -e
, da, wenn grep
nichts gefunden wird, -e
das Skript direkt dort beendet wird. Ohne -e
hast du die Nachricht verkehrt herum: Ein status ( $?
) von 0 bedeutet, dass grep den Benutzer gefunden hat. Beachten Sie, dass dies übrigens "grep" ^ username: "sein sollte (was ist, wenn es einen anderen Benutzer mit einem längeren Namen gibt?).
#/bin/bash -e
sich das genauso aus wie #/bin/bash
in Zeile 1 und set -e
in Zeile 2?
-e
in der Manpage (ich möchte wirklich eine Antwortadresse dazu sehen).$?
enthält den letzten Exit-Code (den desegrep
oben erzeugten Prozesses).