shell脚本---函数

旧城等待, 2022-03-16 06:48 392阅读 0赞

一、我对函数的理解就是:

编写shell脚本时,你经常会发现在多个地方使用了同一段代码。如果只是一小段代码,一般也无关紧要。但是要在shell脚本中多次重写大块代码段,那就太累人了。bash shell提供的用户自定义函数功能就可以解决这个问题。

二、创建函数的四种方法:前三种是在脚本中创建,第四种是在命令行创建。

第一种、

  1. function name () {
  2. commands;
  3. }

第二种、

  1. function name {
  2. commands;
  3. }

第三种

  1. name () {
  2. commands;
  3. }

第四种、在命令行创建函数

  1. $ function divem { echo $[ $1 / $2 ]; }
  2. $ divem 100 5
  3. 20

这个例子是实现两个参数的除法运算。

三、调用函数

调用函数的方法非常简单,直接调用函数名就可以了

eg:

  1. #!/bin/bash
  2. name (){
  3. echo "hello,word!"
  4. }
  5. name

执行一下脚本,就会输出:hello,word!

四、向函数传递参数

1、我们可以向函数中传递变量,必须将参数和函数放在同一行,函数名与参数之间要有一个空格。如需传递多个参数,参数与参数之间要有一个空格。

eg:

  1. #!/bin/bash
  2. name (){
  3. echo $1
  4. echo $2
  5. }
  6. name 4 7

输出的结果是:

4

7

2、我们甚至还可以向函数传递一个数组!

eg:

  1. function ss(){
  2. sss=(`echo "$*"`)
  3. echo ${sss[*]}
  4. }
  5. array=(1 2 3 4 5)
  6. ss ${array[*]}

输出的结果是:1 2 3 4 5

五、函数的递归调用

我们在脚本中创建的函数默认属于本地函数,本地函数中的变量如果不加特殊声明,就是局部函数变量。局部函数变量的一个特性是自成体系。除了从脚本命令处获得的变量,自成体系的函数不需要使用任何的外部资源。而这个特性也使得函数可以递归调用。下面给出两个经典的例子:

1、阶乘函数

  1. vim jiecheng.sh
  2. #!/bin/bash
  3. fac(){
  4. if [ $1 -eq 1 ];then
  5. echo 1
  6. else
  7. temp=$[ $1 - 1 ]
  8. result=$(fac $temp)
  9. echo $[ $result * $1 ]
  10. fi
  11. }
  12. read -p "请输入一个整数:" value
  13. result=$(fac $value)
  14. echo "The facto of $value is:$result"
  15. [root@localhost zuoye]# ./jiecheng.sh
  16. 请输入一个整数:4
  17. The facto of 4 is:24

2、斐波那契数列又称黄金分割数列,因数学家列昂纳多·斐波那契以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……,斐波纳契数列以如下被以递归的方法定义:F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)(n≥2)

  1. vim fbnsl.sh
  2. #!/bin/bash
  3. func(){
  4. f[0]=0
  5. f[1]=1
  6. if [ $1 -gt 1 ];then
  7. for n in `seq 2 $1`;do
  8. let f[$n]=${f[$[$n-1]]}+${f[$[$n-2]]};
  9. done
  10. fi
  11. echo ${f[$1]}
  12. echo ${f[*]}
  13. return 0;
  14. }
  15. func $1
  16. [root@localhost zuoye]# ./fbnsl.sh 4
  17. 3
  18. 0 1 1 2 3

发表评论

表情:
评论列表 (有 0 条评论,392人围观)

还没有评论,来说两句吧...

相关阅读

    相关 shell脚本---函数

    一、我对函数的理解就是: 编写shell脚本时,你经常会发现在多个地方使用了同一段代码。如果只是一小段代码,一般也无关紧要。但是要在shell脚本中多次重写大块代码段,那就太

    相关 shell脚本函数传参

    函数可以提高代码复用,在python、java中比较常见。 shell脚本也有函数,可以将一组命令集或语句形成一个可用代码块。 定义格式 函数名(){