Испытанный поиск вокруг и не мог найти прямое решение моей проблемы, поскольку все другие коды там, кажется, делают то, что я делаю. Я работаю над осуществлением сценариев оболочки для вычисления средних чисел для класса, и я добрался до этой точки с помощью наших ссылочных сценариев, однако я получаю ошибки о синтаксисе (ошибка в конце кода)
#!/bin/bash
avg=0
temp_total=0
number_of_args=$#
# First see the sufficient cmd args
if [ $# -lt 2 ] ; then
echo -e "Oops! I need at least 2 command line args to calculate an average\n"
echo -e "Syntax: $0: number1 number2 ... numberN\n"
echo -e "Example:$0 5 4\n\t$0 56 66 34"
exit 1
fi
# now calculate the average of the numbers given on command line as cmd args for i in $*
do
# addition of all the numbers on cmd args
temp_total='expr $temp_total + $i '
done
avg='expr $temp_total / $number_of_args '
echo "The average of all the numbers is $avg"
Так, ошибка, которую я получаю,
./avg.sh: line 16: syntax error near unexpected token `do'
./avg.sh: line 16: `do'
Я ничего не могу найти особенно неправильно вокруг той области, таким образом, я надеялся, что кто-то мог выручить меня!Спасибо!
править: В частности, я попытался удалить комментарии на всякий случай, что они вызывали проблемы, напрасно. Я перепечатал раздел также. Я также пытался найти различные способы обработать ту часть, но большинство сценариев усреднения, кажется, обрабатывает ее очень похожим способом, таким образом, я в замешательстве!
Сообщение об ошибке жалуется на неожиданное do
потому что Вы использовали его неправильно: do
зарезервированное слово, используемое в for
, case
, while
и until
циклы. Поскольку предыдущий комментарий заканчивается for i in $*
Я предполагаю, что Вы просто забыли добавлять разрыв строки там:
# now calculate the average of the numbers given on command line as cmd args
for i in $*
do
# addition of all the numbers on cmd args
temp_total='expr $temp_total + $1 '
done
man bash
/ Команды ГРАММАТИКИ/СОСТАВНОГО ОБЪЕКТА SHELL объясняет, как создать for
и другие циклы. Если Вы просто хотите циклично выполниться по каждому аргументу bash
также поддерживает краткую форму, я объединю ее с bash
Арифметическое Расширение здесь:
# now calculate the average of the numbers given on command line as cmd args
for i
do
# addition of all the numbers on cmd args
temp_total=$((temp_total+i))
done