У меня есть скрипт bash со следующим:
#!/bin/bash -e
egrep "^username" /etc/passwd >/dev/null
if[ $? -eq 0 ]
then
echo "doesn't exist"
fi
Этот скрипт не будет работать без -e. Что делает -e
для этого сценария? Кроме того, что делает $?
в этом контексте?
-e
задокументировано под set
.
if egrep -q "^username" /etc/passwd ; then echo "doesn't exist" ; fi
if
и [
. Этот сценарий не будет работать с -e
, потому что , если grep
ничего не находит , то под -e
сценарий будет прекратить прямо там. Без -e
, вы получите сообщение в обратном направлении: статус ( $?
) 0 означает, что grep действительно нашел пользователя. Обратите внимание, что это должно быть `grep '^ username:', кстати (что, если есть другой пользователь с более длинным именем?).
#/bin/bash -e
иметь тот же эффект, что и #/bin/bash
в строке № 1 и set -e
в строке № 2?
-e
на странице руководства (я действительно хочу увидеть ответ на этот адрес).$?
содержит последний код выхода (кодegrep
процесса , созданного выше).