shell脚本中无法取得数组中某元素的值

#!/bin/bashfunctionaddarray{localsum=0localarrayarray=(`echo$@`)echo"arrayinfunctiona... #!/bin/bash
function addarray
{
local sum=0
local array
array=(`echo $@`)
echo "array in function adday: ${array[*]}"
for((i=0 ; i<5 ; i++))
do
echo "i=$i"
echo "\$array[$i]=${array[$i]}"
sun=$[ $sum + ${array[$i]} ]
done
echo $sum
}

myarray=(1 2 3 4 5)
echo "The original array is ${myarray[*]}"
arg=`echo ${array[*]}`
sum=`addarray $arg`
echo "sum=$sum"

执行后for循环内sun=$[ $sun + ${array[i]} ] 行出现语法错误,
函数内 echo "\$array[$i]=${array[$i]}" 无法显示苏族元素的实际值

求大虾帮忙看看,在命令行里echo ${array[2]} 是可以显示元素值的啊?
展开
 我来答
百度网友5311d79
推荐于2016-02-15 · TA获得超过1.9万个赞
知道大有可为答主
回答量:6356
采纳率:71%
帮助的人:3227万
展开全部
$[ $sun + ${array[i]} ]
没有这个用法,改一下:
$((sum+${array[$i]}))

array=(`echo $@`) 数组赋值不能这么写,建议用for循环逐个赋值。
追问
第一条修改了但sum还是一直=0;第2条还是能用的
另外输出结果的顺序很怪是这样的
$ ./test
The original array is 1 2 3 4 5
sumout of array: array in addarray: 1 2 3 4 5
i=0
element in array is 1
sum in addarray: 0
i=1
element in array is 2
sum in addarray: 0
。。。(省略)
sum一直=0;而且“sumout of array: ”应该在最后输出的啊怎么在调用的函数(addarray)内部的输出显示之前就先显示出来了?
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式