如何数组长度分配给一个变量在bash

问题描述:

我试图写一个简单的bash脚本,将整数和供应的总和。我想最简单的方法是将输入分配给一个数组。然后遍历数组以执行求和。我需要使用数组的长度在我的for循环,不能弄清楚如何数组长度分配给一个变量。如何数组长度分配给一个变量在bash

赞赏这个简单的脚本任何帮助(我做到了学习bash)的

#!/bin/bash 
# add1 : adding user supplied ints 

echo -n "Please enter any number of integers: " 
read -a input 

echo "Your input is ${input[*]}" 
echo "${#input[@]} number of elements" 

num = ${#input[@]} # causing error 
for ((i = 0; i < "${num}"; ++i)); do # causing error 
    sum = $((sum + input[$i])) 
done 

echo "The sum of your input is $sum" 

其产生的错误:

line 10: num: command not found 
line 11: ((: i < :syntax error: operand expected (error token is "< ") 
+1

[下面是详细信息](http://tldp.org/LDP/abs/html/varassignment.html)上分配CON在击:) – summea 2013-05-01 18:10:23

+0

ventions你说“导致错误”;知道它造成了什么错误会很有帮助。 – msw 2013-05-01 18:16:39

+0

@msw - 已经解决了。感谢您的反馈。错误是: 线10民:未找到命令 线11:((:I ZenStunna 2013-05-01 18:37:31

你只是有一个语法错误。 =之前删除空格:

num = ${#input[@]} # causing error 

变为:

num=${#input[@]} # works 

请注意,如果您使用=运营商分配给一个变量在bash,必须不存在前后=

是任何空间

this entry about Variable Assignment in the Advanced Bash-Scripting Guide

+0

谢谢。它的工作原理,我整个程序有同样的错误。我觉得自己像个白痴。由C++即将在那里那个空间也无所谓...... – ZenStunna 2013-05-01 18:18:34

+0

不担心这一点。每一个庆典编码器曾经看到过这个错误;) – hek2mgl 2013-05-01 18:19:32