Ошибка при добавлении переменных [закрыто]

-1
17.05.2019, 02:58
2 ответа

вы должны проверить свои переменные перед добавлением, потому что, если одна из них не установлена ​​или не имеет числового значения синтаксис добавления завершится ошибкой

Вы можете по умолчанию установить vars равным 0 перед настройкой, чтобы избежать этого.

0
28.01.2020, 05:08

Это не объясняет всего — учитывая ваши объявления переменных, они должны иметь значение — но поскольку вы используете арифметическое расширение , вам не нужно $для введения переменных; неопределенные переменные, то по умолчанию 0:

sum=$((success + etc + map))
total=$((success / sum))
echo "$total"

В идеале вы должны проверить, что sumне равно -нулю перед делением, но, по крайней мере, вы получите осмысленное сообщение об ошибке при таком подходе, даже если вы не проверяетеsum(«деление на 0», а чем «ожидаемая синтаксическая ошибка :операнд», в bash ).

Ошибка, которую вы получаете, исходит от

sum=$(($success + $etc + $map))

По какой-то причине success, etcи mapне определены или пусты. Оболочка расширяет вышеуказанное до

sum=$(( + + ))

, а затем пытается расширить это, что приводит к синтаксической ошибке, которую вы цитируете.

Это довольно удивительно, поскольку

success=$(grep success * | grep B2B | wc -l)

должно получить значение...

Кстати, вы можете улучшить вышеизложенное до:

success=$(grep success./* | grep -c B2B)

или, если B2Bдолжно сопоставляться по содержимому строк успеха , а не по именам файлов:

success=$(cat./* | grep success | grep -c B2B)

или с GNU grepили совместимый:

success=$(grep -h success./* | grep -c B2B)
2
28.01.2020, 05:08

Теги

Похожие вопросы