#!/bin/sh
read -p "请输入想计算的数字:" num  #首先定义一个num参数接受为命令行的第一个参数
expr $num + 1 &>/dev/null  #利用expr计算时参数必须是整数的原则,如果返回零则输入的为整数
[ $? -ne 0 ] && echo “please input a integer number.” && exit 2 #接受上面传过来的参数,做判断,如果为零则返
回提示以及状态码2
[ $num -eq 1 ] && echo “Usage:$0 number can’t is 1” && exit 1 #如果是1则返回提示以及状态码1
[ $num -le 0 ] && echo "please input a number bigger than 0" && exit 3 #不能小于0 啊
for i in `seq 1 $num` #从1循环到num
do
   declare -i  ss=$i+1
    s=$(($i*$ss))  #调用自身实现阶乘双层括号,内层执行运算命令,外层接受返回值并赋值成一个变量
done
echo $s

 

运行结果

[root@localhost rjgc]# bash jc.sh 
请输入想计算的数字:5
30

这里还是有几个问题想请教看到的大佬门

1.第三行为啥要有个&,整体我知道是为了把输出给空,但是加个&啥意思吖(这一句网上copy的,,)

2.第11行为啥要两个括号才可以吖,我本来写成这样

s=$(($i*$i+1))

但是他是先计算乘再计算加,想请教如何定义逻辑计算的优先级吖!各位大佬们啊啊啊啊!

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐