可以用最少的代码轻松实现以下代码吗?
$ cluster1=(x y)
$ cluster2=(a b)
$ cluster3=(m)
$ my=$((${cluster1[0]+1}+${cluster2[0]+1}+${cluster2[0]+1}))
$ echo $my
3
$ my=$((${cluster1[1]+1}+${cluster2[1]+1}+${cluster3[1]+1}))
-bash: 1+1+: syntax error: operand expected (error token is "+")
可能是一个肮脏的把戏,但是如何为 a 加上前缀
0
(因为“替代值”是一个有效的八进制数字是安全的):您的代码为每个未设置的元素生成语法错误。
在这种情况下,最好对集合元素进行计数,而不是尝试使用生成的表达式进行计算:
这将创建一个新数组 ,对于每个在索引处包含一个元素的数组,该数组将包含
is_set
一个。这并不重要,可以是任何字符串。数组 ( ) 中的元素数就是该索引处数组中的集合元素数。1
i
1
is_set
${#is_set[@]}
cluster
测试: