在一个bash脚本中,我找到了下一个构造:
if [[ "${xvar[id]:0:${#cnt}}" != "$cnt" ]]; then
有人可以解释上述条件的作用吗?
答案 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}}。