2

在一个 bash 脚本中,我找到了下一个构造:

if [[ "${xvar[id]:0:${#cnt}}" != "$cnt" ]]; then

有人可以解释上述条件的作用吗?

4

1 回答 1

4

复杂的表达式是:${xvar[id]:0:${#cnt}}.

$xvar必须是一个数组,可能是关联的。如果是关联的,则part${xvar[id]}引用字符串'id'标识的数组元素;如果不是,那么它指的是由变量索引的元素$id(您可以省略嵌套的$),正如chepner在评论中所指出的那样。

表达式的${xxx:0:${#cnt}}部分引用从偏移量 0 到变量长度的子字符串(变量中字符串的长度也是$cnt如此)。${#cnt}$cnt

总而言之,测试检查 的第一个字符是否${xvar[id]}与 的值相同,以及 中$cnt的值$cnt的前缀中的值是否相同${xvar[id]}

于 2012-09-23T23:33:34.760 回答