Мне нужно иметь две переменные и хочу выполнить сложение с этими переменными в сценарии оболочки.

Я использую приведенный ниже скрипт для этого, но я получаю expr: non-numeric argument error

#!/bin/sh
val1=10
val2=20
while [val1 -gt 5]
do
echo $val1
val1=$(expr $VAL + $BAL)
done

1 ответ1

2

Это не верно:

while [val1 -gt 5]

Так должно быть:

while [ $val1 -gt 5 ]

… так как:

  • Вам нужен знак доллара в $val1 для ссылки на переменную.
  • Вам нужен пробел между скобкой [ и переменной. Это команда, в противном случае оболочка сначала расширит $val1 до значения 10 а затем будет искать команду [10 , которую она, очевидно, не может найти.

Кроме того, ваш скрипт должен работать теоретически, но ни $VAL ни $BAL не определены, поэтому понятно, что вы получаете ошибку.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .