Ну, что делает echo
, так это печатает строки, переданные в качестве аргументов. Как эхо звучит, как исходные звуки возвращаются.
echo foo bar
печатает foo bar
; echo "$var"
печатает содержимое$var
(после того, как оболочка расширила значение ); и echo "$1 \* $#"
печатает 10 \* 2
, если это значения $1
и $#
. (Звездочка не используется в двойных -кавычках, поэтому обратная косая черта не удаляется.)
Возможно, вы перепутали это с expr
, которое могло выполнять арифметические действия.
Но нет необходимости во внешней команде для арифметических операций в оболочке, просто используйте арифметическое расширение $((.. ))
, например.:
r=$(( $1 * $# ))
но обратите внимание, что если $1
содержит что-то еще, кроме чисел, результаты могут быть нечетными (или даже выполнять произвольные команды, встроенные в $1
, по крайней мере, в Bash ). Для серьезной работы вы можете сначала проверить значение там на работоспособность.