当前位置: 技术问答>linux和unix
test命令的一点疑问
来源: 互联网 发布时间:2016-11-14
本文导语: test命令还有其他两种形式,分别是[ expression ] 和 [[ expression ]],我遇到问题是: $ls myshell ksh93.s multiply.s (为了说明myshell是非空的) 然后,下面是判断一个目录是否为空 $[[ "myshell/*" = myshell/* ]] && echo "myshel...
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是非空的。为什么这两个相同用法会有不同的输出的结果啊
这是为什么呀,为什么。求大神们指点。
$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是非空的。为什么这两个相同用法会有不同的输出的结果啊
这是为什么呀,为什么。求大神们指点。
|
在[[ ]]中,*是模式的一部分,不进行扩展,所以"myshell/*" = myshell/* 总是相等的
|
[是test
[[是keyword
test==[ ,[!=[[
[[是keyword
test==[ ,[!=[[