Mam skrypt bash z następującymi elementami:
#!/bin/bash -e
egrep "^username" /etc/passwd >/dev/null
if[ $? -eq 0 ]
then
echo "doesn't exist"
fi
Ten skrypt nie będzie działał bez -e. Co robi -e
ten skrypt? Co również robi $?
w tym kontekście?
-e
jest udokumentowane pod set
.
if egrep -q "^username" /etc/passwd ; then echo "doesn't exist" ; fi
if
i [
. Ten skrypt nie działa z -e
, bo jeśli grep
nie znajdzie niczego wtedy pod -e
skryptu zakończy tam. Bez -e
tego wiadomość jest odwrócona: status ( $?
) 0 oznacza, że grep znalazł użytkownika. Zauważ, że tak na marginesie powinna to być nazwa użytkownika `grep '^: (a jeśli jest inny użytkownik o dłuższej nazwie?).
#/bin/bash -e
miał taki sam efekt jak #/bin/bash
na linii nr 1 i set -e
linii nr 2?
-e
na stronie podręcznika (naprawdę chcę zobaczyć odpowiedź na to pytanie).$?
zawiera ostatni kod zakończenia (kodegrep
procesu spawnowanego powyżej).