您好我正在处理bash几何序列,这是我的代码。我正在做什么?
function geometric {
a1=$1;
q=$2;
n=$3;
echo "$a1";
for ((i=1; i<n+1; i++))
do
echo $((a1*(q^(i-1))))
done
}
答案 0 :(得分:0)
bash
中的取幂运算符为**
而不是^
。后者实际上是按位或运算符。因此,简单的解决方案是(在删除最初多余的echo
之后)将表达式echo
修改为:
echo $((a1*(q**(i-1))))
但是,你可能想要考虑使其更具可读性,避免使用复杂的表达式,如下所示:
function geometric {
((val = $1))
((mult = $2))
((count = $3))
while [[ ${count} -gt 0 ]] ; do
echo ${val}
((val *= mult))
((count -= 1))
done
}