在一个 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]}
。