Простой вопрос, я не понимаю, что ! и -d в приведенном ниже -d.
if [ ! -d $directory ]
Простой вопрос, я не понимаю, что ! и -d в приведенном ниже -d.
if [ ! -d $directory ]
-d - это оператор для проверки, существует ли данный каталог или нет.
Например, у меня есть единственный каталог, называемый /home/sureshkumar/test/.
Переменная каталога содержит параметр /home/sureshkumar/test/
if [ -d $directory ]
Это условие выполняется только в том случае, если каталог существует. В нашем примере каталог существует, поэтому это условие истинно.
Я меняю переменную каталога на "/home/a/b/". Этот каталог не существует.
if [ -d $directory ]
Теперь это условие ложно. Если я положил ! если каталог не существует, то условие if истинно. Если каталог существует, то if [ ! -d $directory ] if [ ! -d $directory ] условие false.
Работа! оператор, если условие истинно, тогда оно говорит, что условие ложно. Если условие ложно, то оно говорит, что условие истинно. Это работа! оператор.
if [ ! -d $directory ]
Это условие истинно, только если каталог $ не существует. Если каталог существует, он возвращает false.
Скобки - это тестовый исполняемый файл, восклицательный знак - отрицание, а опция -d проверяет, является ли переменная $directory каталогом.
Из теста человека:
-d FILE
FILE exists and is a directory
! EXPRESSION
EXPRESSION is false
Результатом является оператор if, говорящий "если $directory не является каталогом"
! означает не
-d означает тест, если существует каталог
Итак, if [ ! -d $directory ] if [ ! -d $directory ] означает, что если $directory не существует, или $ directory не является каталогом (возможно, файл).
Обычно за этим следует инструкция для создания каталога, например
if [ ! -d $directory ]; then
mkdir $directory
fi
-d - тестовый оператор в bash, и когда вы кладете ! перед тестовым оператором - его отрицание того же
! отрицает условие.-d проверяет, $directory является каталогом или нет.