Как добавить значения в переменную в сценариях оболочки 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
Ответ 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 не установлен.
Ответ 3 var=$((count7 + count1)) Арифметика в bash использует синтаксис $((...)). Вам не нужно $ symbol в пределах $(( ))
Ответ 5 приведенный выше сценарий может не работать в ksh. вы должны использовать опцию "let" opparand для оценки значения, а затем повторить его. val1=4 val2=3 let val3=$val1+$val2 echo $val3
Ответ 7 У меня нет системы unix под моими руками, но попробуйте это: count7=$((${count7} + ${count1})) Или, может быть, у вас есть оболочка, которая не поддерживает это выражение. Я думаю, что bash это поддерживает, но sh не делает. EDIT: существует еще один синтаксис: count7='expr $count7 + $count1'