• 十四、函数


    1 函数的定义和基本知识

    在linux shell中,所有的函数定义都是平行的,即不允许在函数体内再定义其他的函数,但允许函数之间相互调用

    1.1 函数的定义和基本知识

    • 说明

      • linux shell中函数的返回值只能为退出状态0或1
    • 语法

      [function] function_name(){
      	command1
      	command2
      	...
      	commandN
      }
      
      • 在函数名前可以加上关键字function,可选
      • 函数体中的命令集合必须含有至少一条命令,函数不允许空命令
      • 函数之间通过参数、函数返回值通信
      • 函数在脚本中出现的次序可以是任意的,但必须按照脚本中的调用次序执行这些函数

    2 向函数传递参数

    • 说明

      • 在bash shell编程中,向函数传递的参数仍然是以位置参数的方式来传递的,而不能传递数组等其他形式变量
      • linux shell脚本编程使用间接变量需使用变量${!parameter}来实现
    • 示例

      #! /bin/bash
      
      function half(){
      	let "n=$1"
      	let "n=n/2"
      	echo "In the function half() ,the value is $n"
      }
      
      m=$1
      echo "Before the value m is $m"
      half $m
      echo "After the value m is $m"
      
      

    3 函数返回值

    • 说明
      • 在linux shell编程中,函数通过return返回其退出状态,0表示无错误,1表示有错误

    4 函数调用

    • 说明
      • 函数之间允许相互调用
      • 允许一个函数调用多个函数

    5 局部变量和全局变量

    • 说明
      • 在linux shell编程中,可以通过local关键字在shell函数中声明局部变量,局部变量将局限在函数范围内
      • 函数可调用函数外的全局变量,如果一个局部变量和一个全局变量的名字相同,则在函数中局部变量将会覆盖掉全局变量

    6 函数递归

    • 说明

      • Linux shell中可以递归调用函数,即函数可以直接或间接地调用其自身
      • 需要加控制条件,避免无穷递归
    • 示例

      #! /bin/bash
      
      fucntion fact(){
      	let "num=$1"
      	if [ "$num" -eq 0 ]
      		then 
      			factorial=1
      		else
      			let "decnum=num-1"
      			fact $decnum
      			let "factorial=$num*$?"
      	fi
      	return $factorial
      }
      
      fact $1
      
      echo "Factorial of $1 is $?"
      
      exit 0;
      
  • 相关阅读:
    InstallShield自定义对话框模板代码(转)
    破解汇编知识(转)
    Openrowset数据库远程操作
    SQL类似sleep延时语句
    C#结束线程
    JavaScript中相应ActiveX事件
    Visual C# .NET 命令行编辑器
    AfxBeginThread
    atoi,atol,strtod,strtol,strtoul类型转换(转)
    SQLServer PadLeft,PadRight
  • 原文地址:https://www.cnblogs.com/nuochengze/p/14563381.html
Copyright © 2020-2023  润新知