Prawie dobrze. Operator potęgowania to **, a nie ^. Ja zrobiłem to wykorzystując tylko mnożenie:
#!/usr/bin/env bash
function geometric()
{
a1=$1
q=$2
n=$3
echo "a1 = $a1"
next=$((a1 * q))
for ((i=2; i<n+1; i++))
do
echo "a$i = $next"
next=$((next * q))
done
}
geometric 2 3 4
a1 = 2
a2 = 6
a3 = 18
a4 = 54