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

Bash脚本实现FizzBuzz及循环语法问题求助

Bash版FizzBuzz实现及语法问题修复

先解决循环语法问题

你的脚本输出Number: {0..20..5},原因是大括号步长写法{start..end..step}仅在Bash 4.0及以上版本支持,如果用低版本Bash或通过sh命令执行脚本(而非bash),该语法会被当作字符串解析。

两种解决方式:

  • 确保用Bash执行脚本:给脚本加执行权限chmod +x your_script.sh,然后运行./your_script.sh(依赖脚本开头的#!/bin/bash),或直接用bash your_script.sh调用
  • 改用兼容性更强的C风格for循环,不受Bash版本限制:
#!/bin/bash

for ((i=0; i<=20; i+=5))
do
  echo "Number: $i"
done

完整FizzBuzz实现

以下是符合需求的完整代码,遍历1到100,按规则输出:

#!/bin/bash

for ((i=1; i<=100; i++))
do
  output=""
  ((i % 3 == 0)) && output="Fizz"
  ((i % 5 == 0)) && output+="Buzz"
  # 若未匹配3/5倍数,输出数字本身
  echo "${output:-$i}"
done

代码逻辑说明

  • 用C风格循环遍历1到100,兼容性覆盖绝大多数Bash版本
  • 先判断3的倍数,赋值output为"Fizz";再判断5的倍数,追加"Buzz",自然处理同时是3和5倍数的情况(输出"FizzBuzz")
  • 用${output:-$i}语法简化判断:如果output为空,就输出数字i,否则输出output

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 16:20:47