в bash есть возможность сложения в командной строке:
Код: Выделить всё
$ $((1+1))
-bash: 2: команда не найдена
Код: Выделить всё
Неверное имя переменной.
Код: Выделить всё
$ $((1+1))
-bash: 2: команда не найдена
Код: Выделить всё
Неверное имя переменной.
Код: Выделить всё
echo $((1+1))
Код: Выделить всё
# echo $((1+1))
Неверное имя переменной.
Код: Выделить всё
# `expr 20 + 1`
21: Команда не найдена.
оно работает и в ash (в freebsd он называется /bin/sh). Ты сначала его запусти. Наверное, по дефолту сидишь в tcsh, вот тя он и посылает.sav писал(а):а sh меня посылает и пишетПодскажите пожалуйста, как провернуть такое сложение в sh?Код: Выделить всё
Неверное имя переменной.
Код: Выделить всё
echo `expr 20 + 1`
Код: Выделить всё
> sh
$ type expr let exp
expr is /bin/expr
let is a shell builtin
exp is a shell builtin
$ echo $((1+1))
2
$ let 1+1
2
$ while [ $((i+=1)) -le 10 ]; do echo $i; done
1
2
3
4
5
6
7
8
9
10
Код: Выделить всё
$ sh -c 'while [ ${i:=1} -le 9999 ]; do i=`expr $i + 1` ;echo $i; done >/dev/null; times'
0m0.151s 0m1.000s
0m2.683s 0m7.726s
$ sh -c 'while [ $((i+=1)) -le 9999 ]; do echo $i; done >/dev/null; times'
0m0.046s 0m0.015s
0m0.000s 0m0.000s
$ sh -c 'for i in $(jot - 1 9999); do echo $i; done >/dev/null; times'
0m0.014s 0m0.000s
0m0.004s 0m0.000s