前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >shell中的函数+数组+数组分片

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

作者头像
老七Linux
发布于 2018-05-09 08:51:34
发布于 2018-05-09 08:51:34
3.3K00
代码可运行
举报
运行总次数: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
5320
20.16/20.17 shell中的函数
shell中的函数 把一段代码整理到了一个小单元中,并给这个小单元起一个名字,当用到这段代码时直接调用这个小单元的名字即可。 函数就是一个子shell,就是一个代码段,定义完函数就可以引用它 格式: function 后是函数的名字,并且 function 这个单词是可以省略掉的 花括号{} 里面为具体的命令 格式: function f_name() { command } 函数必须要放在最前面 示例1
运维小白
2022/01/06
2200
Linux基础(day72)
20.16/20.17 shell中的函数 shell中的函数 把一段代码整理到了一个小单元中,并给这个小单元起一个名字,当用到这段代码时直接调用这个小单元的名字即可。 函数就是一个子shell,就是一个代码段,定义完函数就可以引用它 格式: function 后是函数的名字,并且 function 这个单词是可以省略掉的 花括号{} 里面为具体的命令 格式: function f_name() { command
运维小白
2022/01/06
4760
Linux基础(day72)
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
7180
linux学习第六十六篇:shell中的函数,shell中的数组,告警系统需求分析
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
8620
学习笔记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.4K0
shell脚本中常用命令复习
shell脚本可以让降低大家的工作强度,提升大家的管理能力和薪资报酬,还可以让大家有时间学习提升自己,更能让你有时间喝茶撩妹子。所以,学好shell那就是非常必要的啦,那么在学习shell之前我们得热热身,做一下准备工作了。
星哥玩云
2022/09/15
8430
Shell编程
Shell 是一个用 C 语言编写的程序,通过 Shell 用户可以访问操作系统内核服务。
用户4870038
2021/02/05
5K0
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
3650
Shell脚本编程_shell简单脚本
  shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务,在用户和内核之间充当翻译官的角色,是一个命令解释器。Ken Thompson 的 sh 是第一种 Unix Shell,Windows Explorer 是一个典型的图形界面 shell。
全栈程序员站长
2022/11/09
8K0
Shell脚本编程_shell简单脚本
大点干!早点散----------群集负载均衡LVS DR+keepalived部署实战
专为LVS和HA设计的一款健康检查工具 支持故障自动切换( Failover) 支持节点健康状态检查( Health Checking)
不吃小白菜
2020/09/03
7290
大点干!早点散----------群集负载均衡LVS DR+keepalived部署实战
shell_正则_变量_tr_awk_sed_cut(1)
文章目录 正则表达式 特殊字符含义 匹配规则组合 ifconfig的用法 执行脚本的几种方式(bash shell) vim配置文件自动设置脚本文件头 脚本调试 变量 shell语言的特点 强类型语言 弱类型语言 局部变量 全局变量 删除变量 查看变量 练习 1.编写脚本/root/bin/systeminfo.sh, 显示当前主机系统信息,包括主机名,Ipv4地址,操作系统版本,内核版本,CPU型号,内存大小,硬盘大小 tr - ( c d s) awk 文本处理工具 sed sed实例 以行为单位的新增
以某
2023/03/07
1.1K0
keepalived配置高可用集群
一、实验环境: 机器IP (hostname) 作用 192.168.59.130 (zhdy-02) master 192.168.59.131 (zhdy-03) backup 192.168.59.100 vip 1.2 安装keepalived 两台测试机器分别安装keepalived服务: yum install -y keepalived 1.3 两台机器的环境 两台机器都安装nginx,其中131上已经编译安装过nginx,130上需要yum安装nginx: yum install -y n
老七Linux
2018/05/09
8150
101个shell脚本
emm。。这个脚本是因为tomcat没有自带的能够给service开机启动的脚本,我就琢磨着自己写了一个简单的启动脚本,如下:
端碗吹水
2020/09/23
1.4K0
101个shell脚本
搭建LVS-DR负载均衡集群、Keepalived-LVS高可用负载均衡集群
在浏览器访问VIP:192.168.8.100,刷新网页,访问结果由real1、real2交替回复。
阿dai学长
2019/04/03
8610
NO.3 Shell脚本
程序在执行之前需要一个专门的编译过程,把程序编译成 为机器语言文件,运行时不需要重新翻译,直接使用编译的结果就行了。程序执行效率高,依赖编译器,跨平台性差些。如C、C++
py3study
2020/01/10
8670
Shell脚本常用命令一览
描述:bash 是一个为GNU计划编写的Unix shell,它的名字是一系列缩写Bourne-Again SHell — 这是关于Bourne shell(sh)的一个双关语(Bourne again / Born again), Bash不但与Bourne Shell兼容,还继承了C Shell、Korn Shell等优点。
全栈工程师修炼指南
2020/10/26
2K0
Shell脚本常用命令一览
shell项目-分发系统-expect
一、什么是分发系统?(循序渐进) 服务上线,这个词应该不陌生,公司内部一般都会有很多服务器,随着业务的不断发展,我们需要不断的去调整服务器的各项配置来适配现在的需求,但是server很多不可能一台一台的去修改,浪费人工和时间,这时候我们需要一个系统,这个系统可以帮助我们把更新的配置更新到每台服务器。 二、远程登录 2.1 环境需求 模板机 线上的server 2.2 模板机配置 [root@zhdy-03 ~]# yum install -y expect 2.3 自动远程登录,执行命令 vim main
老七Linux
2018/05/09
1.4K0
Shell编程基础
请参考:菜鸟教程参数传递 在执行脚本的时候可以向脚本传递参数,脚本获取参数的格式为:$n
lin_zone
2018/08/15
7910
相关推荐
shell中的函数(function)、数组、告警系统分析
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文