Bash脚本实现键盘输入数字累加(输负数退出)及代码优化问询
你原有的脚本逻辑是可以正常运行的,但其中for循环配合seq的写法属于不必要的冗余设计,不符合Bash的常规书写习惯,直接做算术累加即可,这是该需求的标准实现方案:
#!/bin/bash # 数字累加求和脚本 sum=0 # Bash 中无限循环的常用简写 while :; do # 用read -p 直接整合输入提示,不需要单独调用echo read -p "Insert a number: " num # 可选:添加非数字输入校验,避免脚本异常 if [[ ! $num =~ ^-?[0-9]+$ ]]; then echo "请输入合法的数字!" continue fi if (( num < 0 )); then echo "Negative number, exit..." break fi # 直接累加,完全不需要额外的for循环和seq调用 (( sum += num )) echo "The sum of the previous numbers is $sum" done
主要优化说明
- 去掉冗余的
for循环+seq调用:你原本的写法中seq $num $num只会输出一个和输入相同的数字,循环仅执行1次,完全没有存在的必要,直接对sum做算术运算累加即可,还避免了调用外部seq命令带来的额外开销 - 简化了无限循环写法:
while :是Bash中写无限循环的通用简写,语义和你原本的while [[ true ]]完全一致 - 整合输入提示:
read命令的-p参数可以直接指定输入提示文本,不需要单独写echo语句 - 新增了可选的输入合法性校验:避免用户输入非数字内容时脚本抛出算术运算错误,鲁棒性更强
内容的提问来源于stack exchange,提问作者Zer0
相关产品推荐
相关产品推荐

