好比计算5的阶乘: 5!=1*2*3*4*5=120
使用递归的话,能够简化成:x!=x*(x-1)! 也就是x的阶乘等于x乘以x-1的阶乘算法
1 #!/bin/bash 2 function factorial { 3 if [ $1 -eq 1 ] 4 then 5 echo 1 6 else 7 local temp=$[ $1 - 1 ] 8 local result=$(factorial $temp) 9 echo $[ $result*$1 ] 10 fi 11 }
问题:shell
在于shell函数的做用域。与环境变量同样,shell函数仅在其定义所处的shell会话中有效。若是从shell命令行界面运行myfuncs脚本,那么shell将打开一个新shell,并在该新shell中运行此脚本。这将为新shell定义了3个函数,可是试图运行调用这些库函数的另外一脚本时,库函数并不能使用。bash
解决办法:函数
使用函数库的关键是source命令。source命令在当前shell环境中执行命令,而非建立新shell来执行命令。spa
1 #!/bin/bash 2 function addem { 3 echo $[ $1 + $2 ] 4 } 5 function multem { 6 echo $[ $1 * $2 ] 7 } 8 function divem { 9 if [ $2 -ne 0 ] 10 then 11 echo $[ $1 / $2 ] 12 else 13 echo -1 14 fi 15 } # 定义了一个公共库, 里面有3个函数,addem函数两个数相加;multem函数两个数相乘;divem函数两个数相除
下载地址:ftp://ftp.gnu.org/gnu/shtool/ 最新为2008年的 shtool-2.0.8.tar.gz
命令行
...3d