Может ли кто-нибудь сказать мне, что делает следующая команда оболочки?
if ! mkdir -p $APPLICATION_DIRECTORY/conf





mkdir -p "$APPLICATION_DIRECTORY/conf" пытается создать указанный каталог, попутно создавая все отсутствующие родительские каталоги. Как и любая команда, она имеет целочисленный статус выхода, где 0 указывает, что каталог был успешно создан, а ненулевое значение указывает на ошибку какого-либо рода.
Команда if проверяет статус выхода своей команды, а не логическое значение, как в большинстве других языков программирования. Оператор ! отменяет статус выхода: ненулевой статус выхода преобразуется в 0, а статус выхода 0 преобразуется в 1.
Другими словами,
if ! mkdir -p "$APPLICATION_DIRECTORY/conf"; then
echo "There was an error creating the directory"
else
echo "The directory was successfully created"
fi
Спасибо, ваш ответ очень полезен. :)
Также можно использовать прямую логику (более понятную): если mkdir -p ...
пример :
if mkdir -p "$APPLICATION_DIRECTORY/conf"; then
echo "The directory was successfully created"
else
echo "There was an error creating the directory"
fi
Взгляните на руководство:
man mkdir. Там вы найдете все, что вам нужно знать об этой команде.