У мене є сценарій 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" ^ ім'я користувача: '(що, якщо є інший користувач із довшим ім'ям?).
#/bin/bash -eматиме такий же ефект, як #/bin/bashна лінії №1 та set -eна лінії №2?
-eна сторінці man (я дуже хочу побачити відповідь на це).$?містить останній код виходу (той,egrepякий породжений вище).