shell脚本函数及数组
函数介绍:
函数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脚本函数及数组的更多相关文章
- shell脚本函数与数组
前言 之前写过一篇关于shell脚本流程控制总结,这次继续写关于shell脚本的问题.本篇文章主要包含shell脚本中的函数以及数组的用法介绍.同时也涵盖了一些字符串处理以及shell脚本比较使用的小 ...
- 关于shell脚本函数、数组、字符串截取、svn更新发布实例
#/bin/bash #功能:QA服根据模板创建区配置文件并提交到svn上. SOURCE_PATH=/data/source_code SVN_PATH=/code/psm #svn发布目录,要 ...
- SHELL脚本编程-普通数组(列表)和关联数组(字典)
SHELL脚本编程-普通数组(列表)和关联数组(字典) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.数组相关概述 变量: 存储单个元素的内存空间 数组: 存储多个元素的连续的 ...
- 如何在shell脚本中导出数组供子进程使用
功能说明:设置或显示环境变量. 语 法:export [-fnp][变量名称]=[变量设置值] 补充说明:在shell中执行程序时,shell会提供一组环境变量.export可新增,修改或删除环境变量 ...
- shell脚本--函数
shell的函数和Javacript和php的函数声明一样,只不过shell在调用函数的时候,只需要写函数名就可以调用函数,注意不要在函数名后面加括号 创建并使用函数 #!/bin/bash #文件名 ...
- shell脚本--变量与数组
Linux中的变量有环境变量和用户自定义变量,关于环境变量,可以查看这篇博客:linux环境变量 本文主要针对的是用户在shell脚本中定义的变量,但是环境变量也可以在shell脚本中使用. 普通变量 ...
- 运维shell脚本函数语法
在fun.sh 文件里,使用函数来封装脚本内容 usege() { echo "hello world" echo "脚本怎么使用函数......"}usege ...
- 利用shell脚本函数实现网络连通性的检测
通常情况下,linux系统网络连通性的检测有两种方法: 1.通过“ping指令 + 目标IP” 或者 “ping指令 + 目标IP域名” 注意针对IPv6地址的IP网络检测需要试用ping6,同时pi ...
- Linux命令参数处理 shell脚本函数getopts
getopts 命令 用途 处理命令行参数,并校验有效选项. 语法 getopts 选项字符串 名称 [ 参数 ...] 描述 getopts 的设计目标是在循环中运行,每次执行循环,getopts ...
随机推荐
- 【论文笔记】A review of applications in federated learning(综述)
A review of applications in federated learning Authors Li Li, Yuxi Fan, Mike Tse, Kuo-Yi Lin Keyword ...
- [题解][YZOJ50074] 小 C 的岛屿
仅仅是对 \(O(n^4)\) 做法的一个记录. 简要题意 有 \(N\) 座岛屿,初始时没有边.每座岛屿都有一个概率值 \(p_i\) 和一个大小为 \(s_i\) 友好列表 \(A_i\) . 小 ...
- .net 项目使用 JSON Schema
.net 项目使用 JSON Schema 最近公司要做配置项的改造,要把appsettings.json的内容放到数据库,经过分析还是用json的方式存储最为方便,项目改动性最小,这就牵扯到一个问题 ...
- Hyperledger Fabric 核心概念
一.说明 区块链是一个透明的,基于不可变模式的去中心化系统,核心就是一个分布式账本,记录网络上发生的所有交易. 区块链网络主要有三种类型:公共区块链.联盟区块链,以及私有区块链:我们熟知的比特币.以太 ...
- python+pytest接口自动化(16)-接口自动化项目中日志的使用 (使用loguru模块)
通过上篇文章日志管理模块loguru简介,我们已经知道了loguru日志记录模块的简单使用.在自动化测试项目中,一般都需要通过记录日志的方式来确定项目运行的状态及结果,以方便定位问题. 这篇文章我们使 ...
- 提升站点SEO的7个建议
1.使用HTTPS 谷歌曾发公告表示,使用安全加密协议(HTTPS),是搜索引擎排名的一项参考因素. 所以,在域名相同情况下,HTTPS站点比HTTP站点,能获得更好的排名. 在网络渠道分发或合作上, ...
- linux篇-Linux逻辑卷详解总结
LVM是逻辑卷管理(Logical Volume Manager)的简称,它是建立在物理存储设备之上的一个抽象层,允许你生成逻辑存储卷,与直接使用物理存储在管理上相比,提供了更好灵活性. LVM将存储 ...
- linux篇-centos7安装DHCP服务器
1检查防火墙和selinux(关闭) 关闭防火墙和selinux,这边不多说 2检查DHCP状态 3安装DHCP软件包 4把系统默认的样例复制 5修改配置文件 option domain-name & ...
- 走进Linux的世界
开源软件Linux的起源: Linux--操作系统. Linux,1991年Linux之父林纳斯 本纳第克特 托瓦兹,创建了Linux操作系统内核(开源). Linux的发行版和RHCE 1.Linu ...
- 关于『Markdown』:第二弹
关于『Markdown』:第二弹 建议缩放90%食用 道家有云:一生二,二生三,三生万物 为什么我的帖子不是这样 各位打工人们! 自从我学了Markdown以来 发现 Markdown 语法真的要比 ...