函数介绍:

函数function是由若干条shell命令组成的语句块,实现代码重用和模块话编程。

它与shell程序形式上是相似的,不同的是它不是一个单独的进程,不能独立运行,而是shell程序的一部分。

函数shell程序比较相似,区别在于:

shell程序在shell中运行

而shell函数在当前shell中运行。因此在当前shell中,函数可以对shell中变量进行修改

函数语法

1.function  函数名 {

命令

}

2.函数名(){

命令

}

例子:

运行结果

函数的返回值

return,在shell中也可以用$?表示,函数的返回值又可以称为函数的退出状态,实际上可以理解为一种通信方式。

Shell脚本中函数可以使用返回值的方式把调用的结果信息反馈给调用者。便于调用者可以根据反馈的结果做相应处理。

例子:

函数的传参

运行结果

用户输入的参数分别对应脚本结尾的$2,$1,而$2,$1又对应函数定义的变量1和变量2。

函数的递归

例子:求任意数的阶乘

求3的阶乘,运行结果

数组

数组:存储多个元素的连续的内存空间,相当于多个变量的集合

数组名和索引:

索引:编号从0开始,属于数值索引

定义数组的方法

1.数组名=(元素)元素之间要以空格隔开

2.数组名=([0]=1 [1]=2......)相当于为下标赋值

3.数组名[0]=1

数组名[1]=2

数组名[2]=3

......

数组名相同,和第二种方法类似

如何获取数组的数据列表

echo  ${数组名[*]}

echo  ${数组名[@]}

如何获取数组长度

echo  ${#数组名[*]}

echo  ${#数组名[@]}

获取数组下标对应的值

echo ${数组名[下标值]}

数组的遍历

数组的切片

数组替换

1.临时替换

2.重新赋值

删除数组

unset 数组名

删除数组元素

unset 数组名[下标]

数组元素追加

1.下标赋值

2.将数组长度作为下标进行追加

相当于重新赋值

3.使用+=进行追加

shell脚本函数及数组的更多相关文章

  1. shell脚本函数与数组

    前言 之前写过一篇关于shell脚本流程控制总结,这次继续写关于shell脚本的问题.本篇文章主要包含shell脚本中的函数以及数组的用法介绍.同时也涵盖了一些字符串处理以及shell脚本比较使用的小 ...

  2. 关于shell脚本函数、数组、字符串截取、svn更新发布实例

    #/bin/bash #功能:QA服根据模板创建区配置文件并提交到svn上. SOURCE_PATH=/data/source_code SVN_PATH=/code/psm   #svn发布目录,要 ...

  3. SHELL脚本编程-普通数组(列表)和关联数组(字典)

    SHELL脚本编程-普通数组(列表)和关联数组(字典) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.数组相关概述 变量: 存储单个元素的内存空间 数组: 存储多个元素的连续的 ...

  4. 如何在shell脚本中导出数组供子进程使用

    功能说明:设置或显示环境变量. 语 法:export [-fnp][变量名称]=[变量设置值] 补充说明:在shell中执行程序时,shell会提供一组环境变量.export可新增,修改或删除环境变量 ...

  5. shell脚本--函数

    shell的函数和Javacript和php的函数声明一样,只不过shell在调用函数的时候,只需要写函数名就可以调用函数,注意不要在函数名后面加括号 创建并使用函数 #!/bin/bash #文件名 ...

  6. shell脚本--变量与数组

    Linux中的变量有环境变量和用户自定义变量,关于环境变量,可以查看这篇博客:linux环境变量 本文主要针对的是用户在shell脚本中定义的变量,但是环境变量也可以在shell脚本中使用. 普通变量 ...

  7. 运维shell脚本函数语法

    在fun.sh 文件里,使用函数来封装脚本内容 usege() { echo "hello world" echo "脚本怎么使用函数......"}usege ...

  8. 利用shell脚本函数实现网络连通性的检测

    通常情况下,linux系统网络连通性的检测有两种方法: 1.通过“ping指令 + 目标IP” 或者 “ping指令 + 目标IP域名” 注意针对IPv6地址的IP网络检测需要试用ping6,同时pi ...

  9. Linux命令参数处理 shell脚本函数getopts

    getopts 命令 用途 处理命令行参数,并校验有效选项. 语法 getopts 选项字符串 名称 [ 参数 ...] 描述 getopts 的设计目标是在循环中运行,每次执行循环,getopts ...

随机推荐

  1. 服务器安全加固 - Linux

    一.账号和口令 1.1 禁用或删除无用账号 查看 /etc/passwd 文件查看是否有无用的账号,如果存在则删除,降低安全风险. 操作步骤: 使用命令 userdel <用户名> 删除不 ...

  2. 【笔记】PyTorch快速入门:基础部分合集

    PyTorch快速入门 Tensors Tensors贯穿PyTorch始终 和多维数组很相似,一个特点是可以硬件加速 Tensors的初始化 有很多方式 直接给值 data = [[1,2],[3, ...

  3. Ping原理详解

    关注「开源Linux」,选择"设为星标" 回复「学习」,有我为您特别筛选的学习资料~ 前言 Ping是排除设备访问故障的常见方法.它使用Internet控制消息协议ICMP(Int ...

  4. 交换机POE技术知识大全

    公众号关注 「开源Linux」 回复「学习」,有我为您特别筛选的学习资料~ 一个典型的以太网供电系统,在配线柜里保留以太网交换机设备,用一个带电源供电集线器(Midspan HUB)给局域网的双绞线提 ...

  5. C++进阶-3-5-list容器

    C++进阶-3-5-list容器 1 #include<iostream> 2 #include<list> 3 #include<algorithm> 4 usi ...

  6. Java课程课堂作业代码

    前言 本文章只是单纯记录课堂老师布置的课堂作业代码,题目都比较简单,所以没有写解题思路,相信大家都能理解,当然其中有的解法和代码不是最优的,当时只是为了完成题目,后来也懒得改了,如果有不恰当或者不正确 ...

  7. mysql忘记root密码实现免密登录

    1.配置my.cnf文件,跳过授权表: skip-grant-tables 2.重启mysqld服务 3.z直接mysql登录 4.use mysql这个数据库 5.设置密码: update user ...

  8. 忽略https域名校验不通过

    curl curl 报错: curl: (51) Unable to communicate securely with peer: requested domain name does not ma ...

  9. Git拉取远程新分支

    1.查看本地分支  git branch 2.查看远程分支  git branch -a 3.如果要拉取的远程分支本地没有 git fetch 4.拉取远程新分支到本地 git checkout -b ...

  10. 832. Flipping an Image - LeetCode

    Question 832. Flipping an Image Solution 题目大意:将1列与最后n列对换,2列与n-1列对换-然后再将每个元素取反 思路:遍历二维数组的左半边,对每个元素先做对 ...