在unix Shell脚本中将一个数字的总和一直添加回1

时间:2016-02-06 08:26:43

标签: bash shell unix

我正在尝试将一个数字作为输入并将所有数字添加回1,以便脚本显示总数。例如。如果5是参数,它将执行1 + 2 + 3 + 4 + 5给出15的答案。任何帮助?

这是我目前的代码:

num1=$1
#adder=1
function total()
{
while [[ $num1 -gt 0 ]]
do
  addop=$((num1 + (num1-1)))
  counter=$((num1--))
done
  echo $addop
}


total $1

3 个答案:

答案 0 :(得分:0)

您的脚本不起作用,因为addop设置为不是运行总计,而是设置为num1和num1-1的总和,它在循环的出口处始终为“1”。要修复它,使addop等于num1和它自己,如下所示

if (P[x]=="zika")  to if(P[x].equals("zika") )

答案 1 :(得分:0)

对于踢,一个递归函数:

total() { [[ $1 -eq 1 ]] && echo 1 || echo $(($1 + $($FUNCNAME $(($1-1)) ) )); }

几乎可以保证更慢!并增加了内存资源!

答案 2 :(得分:0)

如何使用{1..n}扩展

#!/bin/bash
eval echo {1..${1}} | tr ' ' '+' | bc

工作原理

> echo {1..5}
1 2 3 4 5

> echo {1..5} | tr ' ' '+'
1+2+3+4+5

> echo {1..5} | tr ' ' '+' | bc
15

所以我们要做的就是动态评估大括号中的第二个参数。

注意:bc是命令行的计算器应用程序(应该安装)。