小编Swa*_*dog的帖子

bash扩展测试语法中的重复否定(!)运算符不会互相否定?

所以这比我真正想要使用的东西更加奇怪.但我发现了一些我用bash扩展测试语法无法理解的东西.

检查一下(包括我的shell版本以防万一):

34>$SHELL --version
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin16)
Copyright (C) 2007 Free Software Foundation, Inc.
35>[ ! -d /tmp ] && echo Hi
36>[ ! ! -d /tmp ] && echo Hi
Hi
37>[[ ! -d /tmp ]] && echo Hi
38>[[ ! ! -d /tmp ]] && echo Hi
39>
Run Code Online (Sandbox Code Playgroud)

好的,所以第35和36行使用正常测试,按照我的预期运行.单个爆炸不会打印一条线(因为/ tmp存在),双重爆炸.

第37行,使用扩展的bash语法,也没有打印任何东西,正如我所料.但第38行也没有!这对我来说是令人惊讶的; 它表示该目录不存在,但也不存在?

搜索有关这方面的信息令人沮丧.我在这里错过了什么吗?一个未提及的语法错误?我只是想明白为什么会这样.

bash

6
推荐指数
1
解决办法
101
查看次数

标签 统计

bash ×1