Каково значение '! -d 'в этой команде Bash?

Простой вопрос, я не понимаю, что ! и -d в приведенном ниже -d.

if [ ! -d $directory ]

Ответ 1

-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.

Ответ 2

Скобки - это тестовый исполняемый файл, восклицательный знак - отрицание, а опция -d проверяет, является ли переменная $directory каталогом.

Из теста человека:

-d FILE
       FILE exists and is a directory

! EXPRESSION
       EXPRESSION is false

Результатом является оператор if, говорящий "если $directory не является каталогом"

Ответ 3

! означает не

-d означает тест, если существует каталог

Итак, if [ ! -d $directory ] if [ ! -d $directory ] означает, что если $directory не существует, или $ directory не является каталогом (возможно, файл).

Обычно за этим следует инструкция для создания каталога, например

if [ ! -d $directory ]; then
  mkdir $directory
fi

Ответ 5

  • ! отрицает условие.
  • -d проверяет, $directory является каталогом или нет.