test命令还有其他两种形式,分别是[ expression ] 和 [[ expression ]],我遇到问题是:
$ls myshell
ksh93.s multiply.s (为了说明myshell是非空的)
然后,下面是判断一个目录是否为空
$[[ "myshell/*" = myshell/* ]] && echo "myshell is empty"
myshell is empty (这是输出结果)
$[ "myshell/*" = myshell/* ] || echo "myshell is not empty"
myshell is not empty (这也是输出结果)
正常情况下,上面那个test命令应该没有输出结果,因为myshell是非空的。为什么这两个相同用法会有不同的输出的结果啊
这是为什么呀,为什么。求大神们指点。
------解决方案--------------------------------------------------------
[是test
[[是keyword
test==[ ,[!=[[
------解决方案--------------------------------------------------------
在[[ ]]中,*是模式的一部分,不进行扩展,所以"myshell/*" = myshell/* 总是相等的