`是什么意思!这个Bash命令中的-d`?

时间:2016-05-24 03:11:49

标签: linux bash shell

简单的问题,我不明白以下陈述中!-d的含义。

if [ ! -d $directory ]

5 个答案:

答案 0 :(得分:12)

-d是一个运算符,用于测试给定目录是否存在。

例如,我有一个名为/ home / sureshkumar / test /的目录。

目录变量包含“/ home / sureshkumar / test /”

if [ -d $directory ]

仅当目录存在时,此条件才为真。在我们的示例中,该目录存在,因此该条件为真。

我正在将目录变量更改为“/ home / a / b /”。 该目录不存在。

if [ -d $directory ]

现在这个条件是假的。如果我在目录不存在的情况下将!放在前面,则if条件为真。如果目录存在,则if [ ! -d $directory ]条件为false。

操作的!运算符是条件为真,然后表示条件为假。如果条件为假,则说条件为真。这是工作!操作

if [ ! -d $directory ]

仅当$ directory不存在时,此条件才为真。如果该目录存在,则返回false。

答案 1 :(得分:6)

括号是测试可执行文件,感叹号是否定,-d选项检查变量$directory是否是目录。

来自man test

-d FILE
       FILE exists and is a directory

! EXPRESSION
       EXPRESSION is false

结果是if语句说"如果$directory不是目录"

答案 2 :(得分:3)

!表示不是

-d表示测试目录是否存在

因此,if [ ! -d $directory ]表示如果$directory不存在,或者$ directory不是目录(可能是文件)。

通常后跟一个用于创建目录的语句,例如

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

答案 3 :(得分:1)

-d是bash中的测试运算符,当你将!放在测试运算符之前 - 它否定了相同的

http://www.techtrunch.com/2011/11/25/test-operators-bash/

答案 4 :(得分:0)

  • !否定条件。
  • -d选项检查$directory是否为目录。