8

在我的一个 shell 脚本中,我看到

if [[ ! -d directory1 || ! -L directory ]] ; then

-d-L选项在这里是什么意思?我在哪里可以找到有关在某种if情况下使用的选项的信息?

4

4 回答 4

11

您可以这样做,这将显示该命令help test接受的大多数选项。[[

您也可以这样做help [,这将显示其他信息。您可以help [[获取有关该类型条件的信息。

另请参阅man bash条件表达式”部分。

于 2012-06-13T11:19:27.843 回答
1

bash具有命令的内置帮助help。您可以使用以下命令轻松找到内置 bash 的选项help

$ help [[
...
Expressions are composed of the same primaries used by the `test' builtin
...
$ help test
test: test [expr]
    Evaluate conditional expression.
    ...
    [the answer you want]
于 2012-06-13T10:50:39.033 回答
1

检查给-d定目录是否存在。对符号链接的 -L测试。

Advanced Bash-Scripting Guide中的文件测试运算符解释了各种选项。这是bash 的手册页,也可以通过在终端中键入来找到。man bash

于 2012-06-13T04:15:33.163 回答
0

在 Bourne shell 中,[并被test链接到相同的可执行文件。因此,您可以在测试手册页中找到许多可用的各种测试。

这个:

if [[ ! -d directory1 || ! -L directory ]] ; then

是说如果不是directory1目录directory不是链接。

我相信正确的语法应该是:

if [[ ! -d $directory1 ] ||  [ ! -L $directory ]] ; then

或者

if [[ ! -d $directory1 -o ! -L $directory ]] ; then

您的 OP 中的行是否正确?

于 2013-07-04T01:33:28.180 回答