• lv3 嵌入式开发-8 linux shell脚本函数


    目录

    1 函数的定义

    2 函数的调用

    3 变量的作用域

     4 练习


    1 函数的定义

    基本语法:

    1. function name() {
    2. statements
    3. [return value]
    4. }

     function是 Shell 中的关键字,专门用来定义函数;  

    name是函数名;  

    statements是函数要执行的代码,也就是一组语句;  

    return value表示函数的返回值,其中 return 是 Shell 关键字,专门用在函数中返回一个值;这一部分可以写也可以不写。 

    2 函数的调用

    函数调用格式:

    方式1:函数的所有标准输出都传递给了主程序的变量

    value_name=`function_name  [arg1 arg2 … ]`
    

    方式2: 获取函数的返回的状态

    1. function_name [arg1 arg2 … ]
    2. echo $?

    示例

    1. //方式2
    2. #!/bin/bash
    3. function fun(){
    4. echo "hello world"
    5. return 0
    6. }
    7. fun
    8. echo $?
    9. #ret=`fun`
    10. #echo $ret
    11. //运行结果
    12. linux@linux:~$ ./fun.sh
    13. hello world
    14. 0
    15. //方式1
    16. #!/bin/bash
    17. function fun(){
    18. echo "hello world"
    19. return 0
    20. }
    21. ret=`fun`
    22. echo "***$ret"
    23. //运行结果
    24. linux@linux:~$ ./fun.sh
    25. ***hello world

     示例

    1. #!/bin/bash
    2. function fun(){
    3. echo "hello world"
    4. grep "$1" /etc/passwd
    5. echo $2
    6. echo $3
    7. echo $4
    8. return 1
    9. }
    10. ret=`fun linux 1 5 8`
    11. echo "******$ret"
    12. //运行结果
    13. linux@linux:~$ ./fun1.sh
    14. ******hello world
    15. linux:x:1000:1000:linux,,,:/home/linux:/bin/bash
    16. 1
    17. 5
    18. 8

    3 变量的作用域

    全局作用域:在脚本的其他任何地方都能够访问该变量。

    局部作用域:只能在声明变量的作用域内访问。

    声明局部变量的格式:

    Local   variable_name =value

    示例

    1. #!/bin/bash
    2. function fun(){
    3. #local val=100
    4. val=100
    5. echo $val
    6. return 1
    7. }
    8. fun
    9. echo "*****$val"

    注意局部变量不能进行命令置换

     4 练习


    将当前目录下的普通文件,归档到hello.tar中,把以上功能封装到一个函数中;

    1. #!/bin/bash
    2. function hello(){
    3. filename=`ls`
    4. for file in $filename
    5. do
    6. if [ -f $file ]
    7. then
    8. tar -rf hello.tar $file
    9. fi
    10. done
    11. }
    12. hello


    计算下5!(5的阶乘)的结果,并打印出来,把以上功能封装到一个函数中;

    1. #!/bin/bash
    2. function fun(){
    3. i=5
    4. RET=1
    5. while (( i > 1 ))
    6. do
    7. RET=`expr $RET \* $i `
    8. i=`expr $i - 1`
    9. done
    10. echo $RET
    11. return 0
    12. }
    13. fun

  • 相关阅读:
    GORM使用指南一
    区块链侧链技术(0)——衍生知识补充
    win10睡眠快捷方式
    编写可扩展的软件:架构和设计原则
    Docker学习总结
    Helm实战案例一:在Kubernetes上使用Helm搭建Prometheus Operator监控
    【学习笔记76】认识ajax和ajax的请求
    微服务框架 SpringCloud微服务架构 20 RestClient 操作索引库 20.4 创建索引库
    PCA数学原理
    java 中的常量
  • 原文地址:https://blog.csdn.net/m0_60718520/article/details/132699312