You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:修改Bash斐波那契脚本,替换表达式计算为expr命令

用expr替换Bash脚本中的算术表达式实现变量赋值

要把$((n0+$n1))替换成expr命令并完成变量赋值,核心是用命令替换语法——把expr命令放在$(...)里,这样命令的输出结果会直接赋值给变量,而不需要重定向到文件。

修改后的完整脚本

#!/bin/bash
if test $# -ne 1; then
  echo "Use: $0 number"
  exit 1
fi
for c in $(seq 1 $1)
do
  if (( $c == 1 )); then
    n0=1
    echo "fibonacci(1)=$n0"
  elif (( $c == 2 )); then
    n1=1
    echo "fibonacci(2)=$n1"
  else
    # 用命令替换将expr的计算结果赋值给n
    n=$(expr $n0 + $n1)
    echo "fibonacci($c)=$n"
    n0=$n1
    n1=$n
  fi
done

关键修改说明

  • 变量赋值方式:n=$(expr $n0 + $n1) 中,$(...)会执行内部的expr命令,把计算出的斐波那契值输出并赋值给变量n,这是Bash中捕获命令输出到变量的标准方式。
  • 修正语法错误:原脚本中for c in ‘seq 1 $1‘使用了中文单引号,会导致语法错误,换成$(seq 1 $1)(推荐)或反引号`seq 1 $1`。
  • 格式优化:调整了缩进、分号位置和换行,让脚本结构更易读,避免因语法格式问题导致的执行错误。

内容的提问来源于stack exchange,提问作者Gigi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 00:11:01