在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获取并输出函数名
审核编辑:刘清
-
Shell
+关注
关注
1文章
358浏览量
22957 -
Bash
+关注
关注
0文章
57浏览量
10107
原文标题:shell脚本基础(五)函数
文章出处:【微信号:FPGA学姐,微信公众号:FPGA学姐】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
嵌入式和物联网的shell脚本学习指南之shell脚本入门免费下载
![嵌入式和物联网的<b class='flag-5'>shell</b><b class='flag-5'>脚本</b>学习指南之<b class='flag-5'>shell</b><b class='flag-5'>脚本</b>入门免费下载](https://file.elecfans.com/web1/M00/63/76/o4YBAFuXkYCALlMqAAHAKzTEIaQ501.png)
如何创建和执行一个简单的Linux shell脚本
Linux中shell脚本执的4种方式
![Linux中<b class='flag-5'>shell</b><b class='flag-5'>脚本</b>执的4种方式](https://file.elecfans.com/web1/M00/BC/E5/o4YBAF7Ie0uAV-14AAApnLOBhTg151.jpg)
109个实用shell脚本分享
shell脚本基础知识
剖析Linux shell 函数实现
![剖析Linux <b class='flag-5'>shell</b> <b class='flag-5'>函数</b>实现](https://file1.elecfans.com//web2/M00/82/B2/wKgZomRdpASAAk5xAABOA2lJ49o392.jpg)
shell脚本基础函数
![<b class='flag-5'>shell</b><b class='flag-5'>脚本</b>基础<b class='flag-5'>函数</b>](https://file1.elecfans.com/web2/M00/88/7E/wKgZomRqw1uAdivIAAAIH0Yxz9c976.png)
评论