格式定义:

    1. [ function ] funname [ () ]
    2. {
    3. aciton;
    4. [return int;]
    5. }
    • function 关键词可省略
    • 不带参数,无形参
    • return 可省略,如省略,最后一条命令作为返回值
    • return 返回的是int 型 0~ 255 之间的数值
    • 函数返回值在调用函数之后通过 $? 来获得
    • 函数内部特殊字符的意义:
      • $# 传递到函数的参数个数
      • $* 以一个单字符显示所有脚本传递的参数
      • $$ 脚本运行的当前进程ID号
      • $! 后台运行的最后一个进程的ID号
      • $@ 与 $*相同,使用时加引号,并在引号中返回每个参数
      • $-显示Shell使用的当前选项,与set 命令功能相同
      • $? 显示命令的退出状态,0表示没有错误,其他任何值表示有错误

    实例:

    1. #函数定义,跟其他语言没差异
    2. function demoFun () {
    3. echo "My first shell function !"
    4. }
    5. #函数调用,没有带括号
    6. demoFun
    7. #不使用function的定义
    8. demoFun1 () {
    9. echo "define a function without keyword: function"
    10. }
    11. #函数调用
    12. demoFun1
    13. # 函数定义必须放在调用前
    14. funWithReturn(){
    15. echo "输入2个数字相加,请输入第一个数字:"
    16. read n1
    17. echo "输入2个数字相加,请输入第二个数字:"
    18. read n2
    19. echo "两个数字分别是$n1 和 $n2"
    20. return $(($n1+$n2))
    21. }
    22. # 函数调用仅使用函数名称即可
    23. funWithReturn
    24. # a=funWithReturn 会返回:"funWithReturn",不能调用赋值
    25. # a=$? # 可以这样引用函数结果并赋值给另一个变量
    26. # echo "和:$a"
    27. # 函数返回值在调用函数之后,通过 $? 来获取
    28. echo "输入的2个数字之和为:$? " # $? 仅可以引用一次,不能被连续多次被引用