Linux shell实现阶乘

#!/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))

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

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值