shell之函数和数组

目录

一、shell函数

1、函数的基本格式

2、函数的返回值return

3、函数的调用

①调用例子

②相同函数名的调用及两个函数里的变量调用

③函数调用顺序

4、函数的作用范围

5、函数的参数

①调用函数时传入2个参数

②用户输入2个参数

6、函数的递归调用

①使用递归计算阶乘

② 用for计算阶乘

7、函数库

二、shell的数组

1、数组的分类

2、数组的定义

①直接把要加入数组的元素用小括号括起来,中间用空格分开

②精确的给每一个下表索引定义一个值加入数组,索引数字可以不连续

③先把要加入数组的元素全部先赋值给一个变量,然后引用这个变量加入到数组

④根据下表定义

3、数组的长度和元素

①数组中所有元素及总数(长度)

②根据下标获取数组元素的内容

4、数组的遍历

5、数组元素的切片(提取)

6、数组元素的临时替换

7、数组的删除

三、冒泡排序

四、总结


一、shell函数

1、函数的基本格式

[function] 函数名() {
  命令序列
[return x]                           #使用return或exit可以显示的结束函数 
}

或者

#也可以省略掉[function],它表示该函数的功能

函数名() {                            #函数名后面()是没有内容的
命令序列                             #我们执行的命令内容放在{}里面
}

函数定义完之后并不会自动执行,需要调用才行,好处在于可以写一段功能代码作为函数,有需要就直接调用。定义的时候哪怕出现语法错误也没关系,不调用就不会报错,当然我们写函数最终目的还是为了调用,为了实现某个功能块。

2、函数的返回值return

表示退出函数并返回一个退出值,脚本中可以用$?变量显示该值

使用原则:

函数一结束就取返回值,因为$?变量值返回执行的最后一条命令的退出状态码

退出状态码必须0~255,超出时值将为取余256(例如:返回码为300,那么将300%256)

3、函数的调用

直接在脚本里定义函数的代码块写函数名即可完成调用 

①调用例子

②相同函数名的调用及两个函数里的变量调用

函数名必须是唯一的,如果先定义了一个,再用同样的名称定义第二个,那么第二个会覆盖第一个的功能,所以这里一定要注意不要重名

2个函数里同一个变量的值不一样,第二个变量值会覆盖第一个值 

③函数调用顺序

 调用函数之前,必须先进行定义!就是说函数的调用必须在函数的后面

4、函数的作用范围

       在 Shell 脚本中函数的执行并不会开启一个新的子 shell,而是仅在当前定义的 shell 环境中有效。如果Shell脚本中的变量没有经过特殊设定,默认在整个脚本中都是有效的。在编写脚本时,有时需要将变量的值限定在函数内部,可以通过内置命令local来实现。函数内部变量的使用,可以避免函数内外同时出现同名变量对脚本结果的影响。

shell脚本中变量默认全局有效

local命令:将变量限定在函数内部使用

函数内与函数外定义相同变量

hanshu2函数内部使用了local命令设置变量a,其作用是将变量a限定在函数内部,hanshu2函数外部同样定义了变量a,内部变量a和全局变量互不影响。脚本执行先调用了函数hanshu2,函数内部变量a为7,所以输出7,调完函数,变量a赋值为10,所以有输出10

5、函数的参数

       在shell中,调用函数时可以向其传递参数,在函数体内部,通过$n的形式来获取参数值,例如,$1表示第一个参数,$2表示第二个参数,就是使用位置参数来实现参数传递。

①调用函数时传入2个参数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吉吉吉吉吉吉吉吉吉吉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值