Как добавить значения в переменную в сценариях оболочки Unix?

У меня есть две переменные, называемые count1 и count7

count7=0
count7=$(($count7 + $count1))

Это показывает ошибку "выражение не является полным, требуется больше токенов".

Как добавить две переменные?

Ответ 1

Что настроен count1? Если он не установлен, он выглядит как пустая строка - и это приведет к недопустимому выражению. Какую оболочку вы используете?

В Bash 3.x на MacOS X 10.7.1:

$ count7=0
$ count7=$(($count7 + $count1))
-sh: 0 + : syntax error: operand expected (error token is " ")
$ count1=2
$ count7=$(($count7 + $count1))
$ echo $count7
2
$

Вы также можете использовать ${count1:-0} чтобы добавить 0, если $count1 не установлен.

Ответ 2

В ksh, bash, sh:

$ count7=0                     
$ count1=5
$ 
$ (( count7 += count1 ))
$ echo $count7
$ 5

Ответ 3

var=$((count7 + count1))

Арифметика в bash использует синтаксис $((...)).

Вам не нужно $ symbol в пределах $(( ))

Ответ 4

Вот простой пример добавления двух переменных:

var1=4
var2=3
let var3=$var1+$var2
echo $var3

Ответ 5

приведенный выше сценарий может не работать в ksh. вы должны использовать опцию "let" opparand для оценки значения, а затем повторить его.

val1=4

val2=3

let val3=$val1+$val2

echo $val3 

Ответ 6

Вы тоже можете это сделать. Может быть быстрее для быстрых вычислений:

echo $[2+2]

Ответ 7

У меня нет системы unix под моими руками, но попробуйте это:

count7=$((${count7} + ${count1}))

Или, может быть, у вас есть оболочка, которая не поддерживает это выражение. Я думаю, что bash это поддерживает, но sh не делает.

EDIT: существует еще один синтаксис:

count7='expr $count7 + $count1'

Ответ 8

 echo "$x"
    x=10
    echo "$y"'enter code here'
    y=10
    echo $[$x+$y]

Ответ: 20