码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 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

  • 相关阅读:
    采用协同搜索策略的算术优化算法
    ArcGIS切片服务获取切片方案xml文件(conf.xml)
    集合基础(ArrayList)
    520. 检测大写字母
    Java进阶02 Array、内存分析、this、面向对象、继承、override、super、实例化、多态、向下转型、Object
    ADSP-21489的图形化编程详解(1:硬件的准备和软件环境的搭建)
    [PYTHON-CSP-前缀和]20210402-邻域均值
    为什么我要迁移 SpringBoot 到函数计算
    javascipt中对象和数组的遍历,for in 和for of的区别是什么
    博睿数据携手亚马逊云科技,助您开启全链路可观测之旅
  • 原文地址:https://blog.csdn.net/m0_60718520/article/details/132699312
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号