As funções no bash não possuem parâmetros nomeados. Você não pode fazer:
area (foo) { ...
function area (foo) { ...
Você pode fazer:
area () {
local radius a # set a local variable that does not leak outside the function
radius=$1 # Save the first parameter to local variable
a=$(( 3 * radius * 2 ))
echo "$a"
}
E então:
echo "$(area "$REPLY")" # use $REPLY as the first argument
Como return
define o status de saída da função, enquanto $(area)
usa a saída da função. Estes são diferentes.
Além disso, enquanto o bash não suporta aritmética de ponto flutuante, ele suporta exponenciação:
$ bash -c 'echo $((3 * 3 ** 2))'
27