复杂的bash变量语法

时间:2012-09-23 23:22:55

标签: bash

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

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

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

1 个答案:

答案 0 :(得分:4)

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

$xvar必须是一个数组,可能是关联的。如果它是关联的,则部分${xvar[id]}引用由字符串'id'标识的数组的元素;如果没有,则它引用由变量$id索引的元素(您可以省略嵌套的$),如评论中的chepner所示。

表达式的${xxx:0:${#cnt}}部分是指从偏移量0到变量$cnt的长度的子字符串(所以${#cnt}是变量{{1}中字符串的长度}})。

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