在bash中定义函数
function和函数名字可以任意省略一个
需要注意的是,函数必须在被调用之前定义
如果没有特别标注,bash中的变量都是全局变量,即使定义在函数内部,所以在函数外部也可以使用;反过来也一样,在函数外部定义的变量在函数内部也可以使用。例如在函数内部修改变量
#!/bin/bashupdate_prefecture(){ prefecture=aomori ←----- 修改在函数外部定义的变量的值 echo $prefecture}prefecture=hokkaido ←----- 定义变量(全局变量)echo $prefectureupdate_prefectureecho $prefecture
结果是
若想定义只作用于函数内部的局部变量可以加local字段
local 变量名=值
对于嵌套调用的两个函数,在外部函数中定义一个局部变量prefecture,然后在内部被调用的函数中修改变量的值,则修改后的结果对外部函数也是有影响的,例如:
#!/bin/bashupdate_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=hokkaidoecho $prefectureupdate_prefecture2echo $prefecture$ ./local_param_nest.shhokkaido[update_prefecture2] iwate[update_prefecture1] iwate ←----- 内部函数沿用在外部函数中定义的变量的值[update_prefecture1] aomori ←----- 在内部函数中修改变量值[update_prefecture2] aomori ←----- 外部函数的值也被修改了hokkaido ←----- 函数外部的全局变量不受影响
local命令可以使用和declare命令相同的参数选,例如定义数组类型的局部变量
local -a prefectures=(iwate miyagi)
要想在函数内部使用指定的参数,可以使用位置参数$1, $2
#!/bin/bashprint_argument(){ echo $0 = $0 echo $1 = $1 echo $2 = $2 echo $3 = $3 echo $# = $#}print_argument aaa bbb ←----- 在调用函数时传递参数
funcname是bash的一个数组类型的变量,里面保存了当前运行的所有函数名,通过变量funcname获取并输出函数名
安森美半导体的LED通用照明设计方案
算法与程序的区别关系_算法与程序设计知识点总结
smt贴片加工前景
物联网行业奥斯卡奖:华大半导体旗下华大电子荣获第一名
哪种耳机对听力伤害小?骨传导耳机能保护听力吗?
shell脚本基础函数
量子研究的新突破,开发出革命性的量子检测技术
基于select!宏的进阶用法
通用汽车裁员为转型做准备 在自动驾驶领域运筹帷幄
指纹识别技术究竟是怎样一步一步火遍智能手机行业领域呢?
电磁流量计传感器安装注意事项
Overview of sensor signal path
索尼PS5更多细节曝光 向后兼容所有PS4游戏及配件
AC220V转12V5V 300MA非隔离降压芯片ic
多张华为mate30pro高清概念渲染图公布 机身颜色颇有质感
联发科4G芯片有望今年底推出
LED广告机的优势及应用介绍
K-means聚类算法指南
GPU巨头,拼什么?
UWB室内定位在冶金安全管理的应用