3

整数を追加して合計を提供する単純な bash スクリプトを作成しようとしています。最も簡単な方法は、入力を配列に割り当てることだと思いました。次に、配列をトラバースして合計を実行します。for ループで配列の長さを使用する必要があり、配列の長さを変数に割り当てる方法がわかりません。

簡単なスクリプト(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 "< ")
4

1 に答える 1

9

構文エラーがあるだけです。の前のスペースを削除します=:

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

になります:

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

演算子を使用して bash の変数に代入する場合、=演算子の前後にスペースがあってはならないことに注意してください。=

Advanced Bash-Scripting Guide の Variable Assignment に関するこのエントリを読んでください。

于 2013-05-01T18:08:36.830 に答える