У меня есть скрипт 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процесса , созданного выше).