!浅识!shell函数及数组

Shell 函数及数组SHELL函数函数的用法基本格式函数的调用示例函数变量的作用范围示例函数的参数递归函数SHELL 数组数组定义的方法数组的基本使用方法:1.获取数组长度2.读取某下标赋值3.数组遍历4.数组切片5.数组替换6.数组删除

SHELL函数
函数的用法

Shell 函数可用于存放一系列的指令。在 Shell 脚本执行的过程中,函数被置于内存中, 每次调用函数时不需要从硬盘读取,因此运行的速度比较快。在 Shell 编程中函数并非是必须的元素,但使用函数可以对程序进行更好的组织。将一些相对独立的代码变成函数,可以提高程序可读性与重用性,避免编写大量重复代码。

基本格式

!浅识!shell函数及数组
“function”关键字表示定义一个函数,可以省略;
“{”符号表示函数执行命令的入口,该符号可以与函数名同行也可以在函数名下一行 的句首;
“}”符号表示函数体结束,两个大括号之间{ }是函数体;
“命令序列”部分可以是任意的 Shell 命令,也可以调用其他函数;
“return”表示退出函数返回一个退出值,通过返回值判断执行是否成功,也可以使用 exit 终止整个 Shell 脚本。

函数的调用

!浅识!shell函数及数组

示例

使用 Shell 脚本实现两个数相加求和,通过定义函数的方式来完成。sum 函数内部通过read 命令接收用户分别输入的两个数,然后做加法运算,最后通过调用函数的方式来输出两个数的和。

#!/bin/bash sum(){
read -p "请输入第一个数:" NUM1 read -p "请输入第二个数:" NUM2
echo “你输入的两个数为: $NUM1 和$NUM2.” SUM=$(( NUM1+$NUM2))
echo “两个数的和为: $SUM”
}
sum


函数变量的作用范围

■函数在Shell脚本中仅在当前Shell环境中有效
■Shell脚本中变量默认全局有效
■将变量限定在函数内部使用local命令

示例

myfun ()
{
local i i=8 echo $i
}
i=9
myfun
echo $i

函数的参数

在使用函数参数时,函数名称在前参数在后,函数名和参数之间用空格分隔,可以有多个参数,参数使用$1、$2、

3103……的方式表示。以此类推,从第 10 个参数开始,调用方法为

3……的方式表示。以此类推,从第10个参数开始,调用方法为{10},不加大括号无法调用成功。

递归函数

Shell 也可以实现递归函数,就是可以调用自己本身的函数。在 Linux 系统上编写 Shell 脚本的时候,经常需要递归遍历系统的目录,列出目录下的文件和目录,逐层递归列出,并 对这些层级关系进行展示

function list_files()
{
for f in `ls $1`; do
if [ -d "$1/$f" ]; then echo "$2$f"
list_files "$1/$f" " $2"
done
}
else fi
echo "$2$f"
list_files "/var/log" ""

SHELL 数组

Shell 脚本中,数组是一种常见的数据结构,主要的应用场景包括:获取数组长度、获取元素长度、遍历元素、元素切片、元素替换、元素删除等等。Shell 中的数组与 Java、C、Python 不同,只有一维数组,没有二维数组。数组元素的大小与限制,也不需要事先定义。Shell 数组用括号()来表示,元素用空格分隔,元素的下标与大部分编程语言类似从 0 开始。

数组定义的方法

!浅识!shell函数及数组

数组的基本使用方法:
1.获取数组长度

[root@localhost ~]# arr_number=(1 2 3 4 5)
[root@localhost ~]# arr_length=${#arr_number[*]}
[root@localhost ~]# echo $arr_length
5
[root@localhost ~]# arr_length_1=${#arr_number[@]}

[root@localhost ~]# echo $arr_length_1
5


2.读取某下标赋值

[root@localhost ~]# arr_index2=${arr_number[2]}  	##第三个元素
[root@localhost ~]# echo $arr_index2
3

3.数组遍历

[root@localhost ~]# vim array_traverse.sh
#!/bin/bash
arr_number=(1 2 3 4 5)
for v in ${arr_number[@]}
do
echo $v
done

4.数组切片

[root@centos-7 ~]# arr=(1 2 3 4 5)
[root@centos-7 ~]# echo ${arr[@]} //输出整个数组1 2 3 4 5
[root@centos-7 ~]# echo ${arr[@]:0:2} //${数组名[@或*]:起始位置:长度} 1 2
[root@centos-7 ~]# echo ${arr[@]:2:3}
3 4 5

5.数组替换

[root@centos-7 ~]# arr=(1 2 3 4 5)
[root@centos-7 ~]# echo ${arr[@]/4/66} //${数组名[@或*]/查找字符/替换字符} 1 2 3 66 5
[root@centos-7 ~]# echo ${arr[@]} //并不会替换数组原有内容1 2 3 4 5
[root@centos-7 ~]# arr=(${arr[@]/4/66}) //要实现改变原有数组,可通过重新赋值实现[root@centos-7 ~]# echo ${arr[@]}
1 2 3 66 5


6.数组删除

[root@centos-7 ~]# arr=(1 2 3 4 5)
[root@centos-7 ~]# unset arr //删除数组[root@centos-7 ~]# echo ${arr[*]}

[root@centos-7 ~]# arr=(1 2 3 4 5)
[root@centos-7 ~]# unset arr[2] //删除第三个元素[root@centos-7 ~]# echo ${arr[*]}
1 2 4 5

原创:https://www.panoramacn.com
源码网提供WordPress源码,帝国CMS源码discuz源码,微信小程序,小说源码,杰奇源码,thinkphp源码,ecshop模板源码,微擎模板源码,dede源码,织梦源码等。

专业搭建小说网站,小说程序,杰奇系列,微信小说系列,app系列小说

!浅识!shell函数及数组

免责声明,若由于商用引起版权纠纷,一切责任均由使用者承担。

您必须遵守我们的协议,如果您下载了该资源行为将被视为对《免责声明》全部内容的认可-> 联系客服 投诉资源
www.panoramacn.com资源全部来自互联网收集,仅供用于学习和交流,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。 敬请谅解! 侵权删帖/违法举报/投稿等事物联系邮箱:2640602276@qq.com
未经允许不得转载:书荒源码源码网每日更新网站源码模板! » !浅识!shell函数及数组
关注我们小说电影免费看
关注我们,获取更多的全网素材资源,有趣有料!
120000+人已关注
分享到:
赞(0) 打赏

评论抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

您的打赏就是我分享的动力!

支付宝扫一扫打赏

微信扫一扫打赏