在一个bash脚本中,我找到了下一个构造:
if [[ "${xvar[id]:0:${#cnt}}" != "$cnt" ]]; then
有人能解释一下上述情况是什么吗?
最佳答案
复杂的表达式是:${xvar[id]:0:${#cnt}}
。$xvar
必须是数组,可能是关联数组。如果是关联的,则part${xvar[id]}
引用由字符串“id”标识的数组元素;如果不是,则引用由变量$id
索引的元素(允许省略嵌套的$
),如注释中的chepner所述。
表达式的${xxx:0:${#cnt}}
部分引用从偏移量0到变量$cnt
长度的子字符串(因此${#cnt}
是变量$cnt
中字符串的长度)。
总之,测试检查${xvar[id]}
的第一个字符是否与$cnt
的值相同,$cnt
中的值是否是${xvar[id]}
中值的前缀。
关于bash - 复杂的bash变量语法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12557131/