在bash中定义函数
function和函数名字可以任意省略一个
需要注意的是,函数必须在被调用之前定义
如果没有特别标注,bash中的变量都是全局变量,即使定义在函数内部,所以在函数外部也可以使用;反过来也一样,在函数外部定义的变量在函数内部也可以使用。例如在函数内部修改变量
#!/bin/bash update_prefecture() { prefecture=Aomori ←----- 修改在函数外部定义的变量的值 echo "$prefecture" } prefecture=Hokkaido ←----- 定义变量(全局变量) echo "$prefecture" update_prefecture echo "$prefecture"
结果是
若想定义只作用于函数内部的局部变量可以加local字段
local 变量名=值
对于嵌套调用的两个函数,在外部函数中定义一个局部变量prefecture,然后在内部被调用的函数中修改变量的值,则修改后的结果对外部函数也是有影响的,例如:
#!/bin/bash update_prefecture1() { echo "[update_prefecture1] $prefecture" prefecture=Aomori echo "[update_prefecture1] $prefecture" } update_prefecture2() { local prefecture=Iwate echo "[update_prefecture2] $prefecture" update_prefecture1 echo "[update_prefecture2] $prefecture" } prefecture=Hokkaido echo "$prefecture" update_prefecture2 echo "$prefecture" $ ./local_param_nest.sh Hokkaido [update_prefecture2] Iwate [update_prefecture1] Iwate ←----- 内部函数沿用在外部函数中定义的变量的值 [update_prefecture1] Aomori ←----- 在内部函数中修改变量值 [update_prefecture2] Aomori ←----- 外部函数的值也被修改了 Hokkaido ←----- 函数外部的全局变量不受影响
local命令可以使用和declare命令相同的参数选,例如定义数组类型的局部变量
local-aprefectures=(IwateMiyagi)
要想在函数内部使用指定的参数,可以使用位置参数$1, $2
#!/bin/bash print_argument() { echo "$0 = $0" echo "$1 = $1" echo "$2 = $2" echo "$3 = $3" echo "$# = $#" } print_argument aaa bbb ←----- 在调用函数时传递参数
FUNCNAME是bash的一个数组类型的变量,里面保存了当前运行的所有函数名,通过变量FUNCNAME获取并输出函数名
审核编辑:彭静
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
函数
+关注
关注
3文章
4303浏览量
62411 -
Shell脚本
+关注
关注
0文章
36浏览量
7964
发布评论请先 登录
相关推荐
嵌入式和物联网的shell脚本学习指南之shell脚本入门免费下载
本文档的主要内容详细技术的是嵌入式和物联网的shell脚本学习指南之shell脚本入门免费下载。
发表于 09-11 17:15
•20次下载
109个实用shell脚本分享
Shell脚本,就是利用Shell的命令解释的功能,对一个纯文本的文件进行解析,然后执行这些功能,也可以说Shell脚本就是一系列命令的集合
shell脚本基础知识
shell脚本是一个文件,里面存放的是特定格式的指令,系统可以使用脚本解析器翻译或解析指令并执行(无需编译),shell脚本的本质是
剖析Linux shell 函数实现
作为一个嵌入式 Linux 工程师,肯定需要编写 shell 脚本进行一些自动化工作。刚好,我最近就有类似需求——一键交叉编译 DDS。本着“编写漂亮代码的原则”,我用到了 **shell 函
Linux Shell脚本经典案例分享
作为一名 Linux 运维工程师,会写好的脚本不仅能提高工作效率,还能有更多的时间做自己的事。最近在网上冲浪的时候,发现大家对Shell脚本都有“心结”,要么觉得自己写出来不好看,要么根本无从下手。 下面分享249个真实
发表于 06-16 14:03
•631次阅读
评论