在一个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/

10-13 05:52