• 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

  • 相关阅读:
    Ubuntu安装docker,并换镜像源详细教程,建议收藏
    HTML & CSS入门:从基础到实践
    JavaScript之事件
    使用C#和MonoGame开发俄罗斯方块游戏
    ANSYS安装教程
    Nginx日志有哪些常用的分析
    linux添加了公钥后,ssh登录却还需要密码
    Spring boot发布到k8s并加载Configmap配置文件,实现配置热更新
    进程间通信(IPC)
    Docker 搭建Redis 集群之路
  • 原文地址:https://blog.csdn.net/m0_60718520/article/details/132699312