我读了这样一句话:
arrayA=$((${#arrayB[@]}+${#arrayC[@]}));
它做什么?特别是数组名称前面#
的含义是什么?
答案 0 :(得分:5)
${#a[@]}
扩展为数组a中的元素数。请参阅Shell Parameter Expansion section of the reference manual。
谢谢@gniourf_gniourf,但这条线的整体情况如何呢?我尝试在我的终端中使用两个数组运行rhs,它似乎尝试将sum结果作为命令执行?这对我来说没有意义......
$((...))
是arithmetic context。${#arrayB[@]}
和${#arrayC[@]}
分别扩展为arrayB
和arrayC
中的元素数量。$((${#arrayB[@]}+${#arrayC[@]}))
扩展为arrayB
和arrayC
中元素数量的总和。请使用echo $((${#arrayB[@]}+${#arrayC[@]}))
。arrayA
分配arrayB
和arrayC
中元素数量的总和。演示:
$ arrayB=( one two three )
$ arrayC=( alpha beta gamma delta )
$ echo "${#arrayB[@]}"
3
$ echo "${#arrayC[@]}"
4
$ echo "$(( ${#arrayB[@]} + ${#arrayC[@]} ))"
7
$ arrayA=$(( ${#arrayB[@]} + ${#arrayC[@]} ))
$ echo "$arrayA"
7
答案 1 :(得分:1)
该行:
arrayA=$((${#arrayB[@]}+${#arrayC[@]}));
读取:set the value of variable arrayA as the summed length of arrayB and arrayC
$(())
是算术扩展语法,其中您有两个数组长度+
的总和${#array[@]}