@($ {VAR})是什么意思?

Ell*_*Ell 3 unix bash shell ksh

在查看一些shell脚本时,我遇到了几个if语句实例,它们将一些正常变量与另一个包含在@()括号中的变量进行比较.

@(....)是否有一些特殊的含义,或者我错过了一些明显的东西?如果测试的示例:

if [[ ${VAR} != @(${VAR2}) ]]
Run Code Online (Sandbox Code Playgroud)

谢谢

che*_*ner 9

这是一种扩展模式,借鉴于ksh.本来你就需要启用与支持它shopt -s extglob,却成了里面的默认行为[[ ... ]]bash4.1.@(...)匹配其中一个封闭的模式.就其本身而言,@(pattern)pattern会相等的,所以我会假设的内容是$VAR2包含至少一个管道,使得膨胀是一样的东西@(foo|bar).在这种情况下,如果测试成功,会$VAR1不会匹配foobar.