Каково значение '! -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
Ответ 4
-d
- тестовый оператор в bash, и когда вы кладете !
перед тестовым оператором - его отрицание того же
http://www.techtrunch.com/2011/11/25/test-operators-bash/
Ответ 5
-
!
отрицает условие. -
-d
проверяет, $directory
является каталогом или нет.