求助:修改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
相关产品推荐
相关产品推荐

