2014-09-03 2 views
0

Я пытаюсь рассчитать количество файлов, которые я передаю ftp на другой сервер. Мой код ниже:Добавление двух цифровых номеров

#!/bin/sh 
cnt=0  
cnt=`expr $cnt+1`  
echo $cnt 

, и это дает мне результат:

0+1 

мне это нужно, как 1.

Не могли бы вы рассказать мне, что не так с кодом?

ответ

2

Для расчетов вы можете использовать $(()). Например, как это:

#!/bin/sh 
cnt=0  
cnt=$((cnt + 1))  
echo $cnt 

Взятые из 2. Shell Command Language #Arithmetic Expansion

+0

Этот код выдает ошибку: Ошибка синтаксиса в строке 6: CNT = $ неожиданный – 2014-09-03 14:21:47

+0

@ digioleg54 что, если вы используете 'CNT = $ (($ CNT + 1)) '? То есть '$ cnt' в выражении' $ (()). – fedorqui

1
cnt=0 
((cnt++)) 

echo $cnt 
1 

((cnt++)) 
echo $cnt 
2 
+0

Забавный, я думал, что 'sh' не разрешал' ((cnt ++)) ', в отличие от' bash'. Я просто проверял и да, это так! +1 для множества решений. – fedorqui

+1

@fedorqui Забавный! Когда я увидел ваше решение, я вдруг усомнился в собственном решении и повторил его :-) –

2

expr, в отличие от $(()), необходимо получить отдельные аргументы оболочки. Так что это будет работать:

cnt=`expr $cnt + 1` 

и так это будет

cnt=$((cnt+1)) 
1

Ошибка вы не имеете пробелы до и после знака «+».
Try окружающих математике оператора с пробелами, например:

#!/bin/sh 
cnt=0  
cnt=`expr $cnt + 1`  
echo $cnt 
Смежные вопросы