首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >shell中的函数+数组+数组分片

shell中的函数+数组+数组分片

作者头像
老七Linux
发布于 2018-05-09 08:51:34
发布于 2018-05-09 08:51:34
3.7K00
代码可运行
举报
运行总次数:0
代码可运行
一、函数:

函数就是把一段代码整理到了一个小单元中,并给这个小单元起一个名字,当用到这段代码时直接调用这个小单元的名字即可。

直接来讲函数脚本吧:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#! /bin/bash

function inp(){             //定义一个inp的函数

echo $1 $2 $3 $0 $#         

}

inp 1 a 2 b                 //传入参数
例如咱们有个脚本进行互动:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sh test.sh 2 b 3 c

$1 : 第一个参数 就是如上的“2$2 : 第二个参数 就是如上的“b”
$3 : 第三个参数 就是如上的“3$0 : 脚本的本身名称 如上的“test.sh”
$# : 其实就是统计有几个参数这边是“2 b 3 c” 那就是$# = 4
$@ : 代表所有的参数 2 b 3 c
再来一个比较容易理解的脚本:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#!/bin/bash

sum() {             //定义的函数名为sum
    s=$[$1+$2]
    echo $s
}
sum 1 2

根据如上的介绍,这边的1 就是所谓的 $1参数;2 就是所谓的$2 参数

再来一个提高下:

输入网卡的名字,检查网卡的IP地址:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#!/bin/bash
ip() {
	ifconfig | grep -A1 "$e" |tail -1 | awk '{print $2}'
}
read -p "Please input the eth name: " e
myip=`ip $e`
echo "$e address is $myip"

如上脚本适用于centos 7执行步骤为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sh -x function2.sh 

+ read -p 'Please input the eth name: ' e
Please input the eth name: ens33
++ ip ens33
++ grep -A1 ens33
++ tail -1
++ awk '{print $2}'
++ ifconfig
+ myip=192.168.96.129
+ echo 'ens33 address is 192.168.96.129'
ens33 address is 192.168.96.129

二、数组:

数组在脚本中虽然不经常用,但是一旦去用了就会非常实用!

定义数组
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[[email protected]-01 sbin]# a=(1 2 3)          //定义一个数组a并赋值 1 2 3

[[email protected]-01 sbin]# echo ${a[*]}       //注意输出a的值的格式
1 2 3

[[email protected]-01 sbin]# echo ${a[1]}       //输出单个a数组中的值
2
[[email protected]-01 sbin]# echo ${a[2]}
3
[[email protected]-01 sbin]# echo ${a[0]}       //注意第一个其实是 0
1

[[email protected]-01 sbin]# echo ${#a[@]}      //获取数组的元素个数
3
元素的更改和赋值
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[[email protected]-01 sbin]# a[3]=a         //给第三个数组赋值一个a
[[email protected]-01 sbin]# echo ${a[*]}
1 2 3 a

[[email protected]-01 sbin]# a[3]=aaa       //修改赋值为aaa
[[email protected]-01 sbin]# echo ${a[*]}
1 2 3 aaa
元素的删除
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[[email protected]-01 sbin]# unset a[2]         //删除a数组中第2位的值
[[email protected]-01 sbin]# echo ${a[*]}
1 2 aaa

[[email protected]-01 sbin]# unset a            //删除a数组
[[email protected]-01 sbin]# echo ${a[*]}
数组分片
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[[email protected] sbin]# a=(`seq 1 8`)      //给a赋值8个数
[[email protected] sbin]# echo ${a[*]}
1 2 3 4 5 6 7 8

假如现在的需求是我只需要 4 5 6

[[email protected] sbin]# echo ${a[@]:3:3}       //意思是,从第3个数组开始,截取3个。
4 5 6

另外一个需求 只需要 6 7

[[email protected] sbin]# echo ${a[@]:0-3:2}     //从倒数第三个开始,取两个数
6 7
数组替换
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[[email protected]-01 sbin]# echo ${a[@]/5/asd}
1 2 3 4 asd 6 7 8
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016/09/15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
shell中的函数(function)、数组、告警系统分析
函数就是把一段代码整理到一个小单元中,并给这个小单元命名,当用到这段代码时直接调用这个小单元的名字即可。
阿dai学长
2019/04/03
5600
Linux基础(day72)
20.16/20.17 shell中的函数 shell中的函数 把一段代码整理到了一个小单元中,并给这个小单元起一个名字,当用到这段代码时直接调用这个小单元的名字即可。 函数就是一个子shell,就是一个代码段,定义完函数就可以引用它 格式: function 后是函数的名字,并且 function 这个单词是可以省略掉的 花括号{} 里面为具体的命令 格式: function f_name() { command
运维小白
2022/01/06
4980
Linux基础(day72)
LVS DR模式+keepalived架构搭建
为什么不使用IP TUNNEL模式呢? 在生产环境中用的比较多的情况就是DR模式,NAT模式用的也不是太多,因为我们也说到了NAT的瓶颈问题。 如果规模在10台以内访问量不是很大且硬件配置+网络环境都可以的话建议使用NAT模式,可以节省公网IP,因为公网IP的成本也比较高。 另外一种方案就是搭建内网的LVS,全部的server均使用内网IP,我们使用一个公网IP端口映射到内网VIP的80端口即可,从而达到节省IP资源。 一、准备工作: 1.1 三台模拟服务器: 主机名 IP 地址 角色 zhdy-01 19
老七Linux
2018/05/09
9270
linux学习第六十六篇:shell中的函数,shell中的数组,告警系统需求分析
shell中的函数 函数就是把一段代码整理到了一个小单元中,并给这个小单元起一个名字,当用到这段代码时直接调用这个小单元的名字即可。 格式: function f_name() { command } 函数必须要放在最前面 示例1 #!/bin/bash input() { echo $1 $2 $# $0 } input 1 a b 示例2 #!/bin/bash sum() { s=$[$1+$2] ec
用户1215343
2018/03/29
7360
linux学习第六十六篇:shell中的函数,shell中的数组,告警系统需求分析
20.16/20.17 shell中的函数
shell中的函数 把一段代码整理到了一个小单元中,并给这个小单元起一个名字,当用到这段代码时直接调用这个小单元的名字即可。 函数就是一个子shell,就是一个代码段,定义完函数就可以引用它 格式: function 后是函数的名字,并且 function 这个单词是可以省略掉的 花括号{} 里面为具体的命令 格式: function f_name() { command } 函数必须要放在最前面 示例1
运维小白
2022/01/06
2550
101个shell脚本
emm。。这个脚本是因为tomcat没有自带的能够给service开机启动的脚本,我就琢磨着自己写了一个简单的启动脚本,如下:
端碗吹水
2020/09/23
1.5K0
101个shell脚本
Shell函数和数组
函数格式: function test(){ command } test() { command } function 关键字可写,也可不写。 函数调用 #!/bin/bash test() { echo "This is a function." } test # bash test.sh This is a function. Shell 函数很简单,函数名后跟双括号,再跟双大括号。通过函数名直接调用,不加小括号。 函数返回值 #!/bin/bash test()
入门笔记
2021/01/09
4050
Shell编程
Shell 是一个用 C 语言编写的程序,通过 Shell 用户可以访问操作系统内核服务。
用户4870038
2021/02/05
5.2K0
Shell编程
学习笔记0618----shell脚本(二)
格式:函数必须要放在最前面,function 后是函数的名字,并且 function 这个单词是可以省略掉的,花括号{} 里面为具体的命令
嘻哈记
2020/11/24
1.7K0
LVS NAT模式搭建
回顾一下,其实NAT模式就是通过iptables模式实现的。所以我们会配置一些规则在上面。 一、准备工作: 1.1 三台模拟服务器: 主机名 IP 地址 角色 网关 zhdy-01 192.168.230.128 (公网IP:192.168.138.128) Load Balancer zhdy-02 192.168.230.142 Real serverA 192.168.230.128(分发器的内网IP) zhdy-03 192.168.230.144 Real serverB 192.168.230
老七Linux
2018/05/09
1.5K0
Shell脚本编程_shell简单脚本
  shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务,在用户和内核之间充当翻译官的角色,是一个命令解释器。Ken Thompson 的 sh 是第一种 Unix Shell,Windows Explorer 是一个典型的图形界面 shell。
全栈程序员站长
2022/11/09
8.4K0
Shell脚本编程_shell简单脚本
Linux从入门到精通(十二)——shell编程
Shell脚本:按照一定的语法结构把若干linux命令组合在一起,实现特定的功能。
传说之下的花儿
2023/04/16
5K0
03 . Shell数组和函数
Shell数组 简介 数组中可以存放多个值。Bash Shell 只支持一维数组(不支持多维数组),初始化时不需要定义数组大小(与 PHP 类似)。 与大部分编程语言类似,数组元素的下标由0开始。 Shell 数组用括号来表示,元素用"空格"符号分割开,语法格式如下: # array_name=(value1 ... valuen) 实例 #!/bin/bash my_array=(A B "C" D) # 我们可以使用功能下标来定义数组 array_name[0]=value0 array_n
iginkgo18
2020/09/27
1.5K0
Linux shell 一些命令
管道命令操作符 | 可以用来连接进程,管道符左边命令可以作为管道符右边命令的输入。
用户5908113
2020/06/22
5560
大点干!早点散----------群集负载均衡LVS DR+keepalived部署实战
专为LVS和HA设计的一款健康检查工具 支持故障自动切换( Failover) 支持节点健康状态检查( Health Checking)
不吃小白菜
2020/09/03
7650
大点干!早点散----------群集负载均衡LVS DR+keepalived部署实战
告警监控系统开发
一、需求分析 需求: 使用shell定制各种个性化告警工具,但需要统一化管理、规范化管理。 思路: 指定一个脚本包,包含主程序、子程序、配置文件、邮件引擎、输出日志等。 主程序: 作为整个脚本的入口,是整个系统的命脉。 配置文件: 是一个控制中心,用它来开关各个子程序,指定各个相关联的日志文件。 子程序: 这个才是真正的监控脚本,用来监控各个指标。 邮件引擎: 是由一个python程序来实现,它可以定义发邮件的服务器、发邮件人以及发件人密码。 输出日志: 整个监控系统要有日志输出。 要求: 我们的机器角色多
老七Linux
2018/05/09
1.6K0
shell脚本中常用命令复习
shell脚本可以让降低大家的工作强度,提升大家的管理能力和薪资报酬,还可以让大家有时间学习提升自己,更能让你有时间喝茶撩妹子。所以,学好shell那就是非常必要的啦,那么在学习shell之前我们得热热身,做一下准备工作了。
星哥玩云
2022/09/15
9590
shell项目-分发系统-expect
一、什么是分发系统?(循序渐进) 服务上线,这个词应该不陌生,公司内部一般都会有很多服务器,随着业务的不断发展,我们需要不断的去调整服务器的各项配置来适配现在的需求,但是server很多不可能一台一台的去修改,浪费人工和时间,这时候我们需要一个系统,这个系统可以帮助我们把更新的配置更新到每台服务器。 二、远程登录 2.1 环境需求 模板机 线上的server 2.2 模板机配置 [root@zhdy-03 ~]# yum install -y expect 2.3 自动远程登录,执行命令 vim main
老七Linux
2018/05/09
1.5K0
Python自动化运维之shell终极指南
第 2 章 核心知识[应用] 2.1 表达式 2.1.1 测试语句 应用场景 判断条件是否成立
海仔
2020/08/22
1.7K0
Linux防火墙-iptables filter表
环境: A机器两块网卡ens33(192.168.8.125)、ens37(192.168.100.1),ens33可以上外网,ens37仅仅是内部网络,B机器只有ens37(192.168.100.100),和A机器ens37可以通信互联。
阿dai学长
2019/04/03
1.3K0
相关推荐
shell中的函数(function)、数组、告警系统分析
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档