Ell*_*Ell 3 unix bash shell ksh
在查看一些shell脚本时,我遇到了几个if语句实例,它们将一些正常变量与另一个包含在@()括号中的变量进行比较.
@(....)是否有一些特殊的含义,或者我错过了一些明显的东西?如果测试的示例:
if [[ ${VAR} != @(${VAR2}) ]]
Run Code Online (Sandbox Code Playgroud)
谢谢
这是一种扩展模式,借鉴于ksh
.本来你就需要启用与支持它shopt -s extglob
,却成了里面的默认行为[[ ... ]]
在bash
4.1.@(...)
匹配其中一个封闭的模式.就其本身而言,@(pattern)
并pattern
会相等的,所以我会假设的内容是$VAR2
包含至少一个管道,使得膨胀是一样的东西@(foo|bar)
.在这种情况下,如果测试成功,会$VAR1
不会不匹配foo
或bar
.