linux脚本阶乘

[root@dqysh020073 ~]# cat jiecheng.sh
#!/bin/bash
#
m=${1:-5}  //之前没有加这条,后来直接运行不加参数就悲剧了,系统卡死,出现了死循环
fact(){
   if [ $1 -eq 0 -o $1 -eq 1 ];then
      echo 1
   else
      echo $[$1*$(fact $[$1-1])]
   fi
}

fact $m

[root@dqysh020073 ~]# sh -x jiecheng.sh   //不加参数时,不加上面的那条直接运行会呵呵
+ m=5
+ fact 5
+ '[' 5 -eq 0 -o 5 -eq 1 ']'
++ fact 4
++ '[' 4 -eq 0 -o 4 -eq 1 ']'
+++ fact 3
+++ '[' 3 -eq 0 -o 3 -eq 1 ']'
++++ fact 2
++++ '[' 2 -eq 0 -o 2 -eq 1 ']'
+++++ fact 1
+++++ '[' 1 -eq 0 -o 1 -eq 1 ']'
+++++ echo 1
++++ echo 2
+++ echo 6
++ echo 24
+ echo 120

120

[root@dqysh020073 ~]# sh -x jiecheng.sh 10 //加参数时
+ m=10
+ fact 10
+ '[' 10 -eq 0 -o 10 -eq 1 ']'
++ fact 9
++ '[' 9 -eq 0 -o 9 -eq 1 ']'
+++ fact 8
+++ '[' 8 -eq 0 -o 8 -eq 1 ']'
++++ fact 7
++++ '[' 7 -eq 0 -o 7 -eq 1 ']'
+++++ fact 6
+++++ '[' 6 -eq 0 -o 6 -eq 1 ']'
++++++ fact 5
++++++ '[' 5 -eq 0 -o 5 -eq 1 ']'
+++++++ fact 4
+++++++ '[' 4 -eq 0 -o 4 -eq 1 ']'
++++++++ fact 3
++++++++ '[' 3 -eq 0 -o 3 -eq 1 ']'
+++++++++ fact 2
+++++++++ '[' 2 -eq 0 -o 2 -eq 1 ']'
++++++++++ fact 1
++++++++++ '[' 1 -eq 0 -o 1 -eq 1 ']'
++++++++++ echo 1
+++++++++ echo 2
++++++++ echo 6
+++++++ echo 24
++++++ echo 120
+++++ echo 720
++++ echo 5040
+++ echo 40320
++ echo 362880
+ echo 3628800

3628800

      (1) ${value:-word}
  当变量未定义或者值为空时,返回值为word的内容,否则返回变量的值.
  (2) ${value:=word}
  与前者类似,只是若变量未定义或者值为空时,在返回word的值的同时将
  word赋值给value
  (3) ${value:?message}
  若变量以赋值的话,正常替换.否则将消息message送到标准错误输出(若
  此替换出现在Shell程序中,那么该程序将终止运行)
  (4) ${value:+word}
  若变量以赋值的话,其值才用word替换,否则不进行任何替换


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值