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 -efür dieses Skript? Und was macht der $?in diesem Zusammenhang?
-eist dokumentiert unter set.
if egrep -q "^username" /etc/passwd ; then echo "doesn't exist" ; fi
ifund [. Dieses Skript funktioniert nicht mit -e , da, wenn grepnichts gefunden wird, -edas Skript direkt dort beendet wird. Ohne -ehast 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 -esich das genauso aus wie #/bin/bashin Zeile 1 und set -ein Zeile 2?
-ein der Manpage (ich möchte wirklich eine Antwortadresse dazu sehen).$?enthält den letzten Exit-Code (den desegrepoben erzeugten Prozesses).