为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

人到中年有点甜 2019-04-11 06:06:47
#!/bin/bashfunction addarray{local sum=0local arrayarray=(`echo $@`)echo "array in function adday: ${array[*]}"for((i=0 ; i<5 ; i++))doecho "i=$i"echo "\$array[$i]=${array[$i]}"sun=$[ $sum + ${array[$i]} ]doneecho $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]} 是可以显示元素值的啊?
查看完整描述

2 回答

?
牛魔王的故事

TA贡献1830条经验 获得超3个赞

$[ $sun + ${array[i]} ]
没有这个用法,改一下:
$((sum+${array[$i]}))

array=(`echo $@`) 数组赋值不能这么写,建议用for循环逐个赋值。

查看完整回答
反对 回复 2019-04-12
?
眼眸繁星

TA贡献1873条经验 获得超9个赞

第一条修改了但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)内部的输出显示之前就先显示出来了?

查看完整回答
反对 回复 2019-04-12
  • 2 回答
  • 0 关注
  • 912 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信