У мене є сценарій 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
який породжений вище).