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

一、函数:

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

直接来讲函数脚本吧:
#! /bin/bash

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

echo $1 $2 $3 $0 $#         

}

inp 1 a 2 b                 //传入参数
例如咱们有个脚本进行互动:
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
再来一个比较容易理解的脚本:
#!/bin/bash

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

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

再来一个提高下:

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

#!/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执行步骤为:

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

二、数组:

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

定义数组
[[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
元素的更改和赋值
[[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
元素的删除
[[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[*]}
数组分片
[[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
数组替换
[[email protected]-01 sbin]# echo ${a[@]/5/asd}
1 2 3 4 asd 6 7 8

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏技巅

Thrift之代码生成器Compiler原理及源码详细解析2

23950
来自专栏V站

30个php操作redis常用方法代码例子

Redis的操作很多的,以前看到一个比较全的博客,但是现在找不到了。查个东西搜半天,下面整理一下PHP处理Redis的例子,个人觉得常用一些例子。下面的例子都是...

17540
来自专栏散尽浮华

python-基础案例

范例一: 练习:元素分类 有如下值集合 [11,22,33,44,55,66,77,88,99,90...],将所有大于 66 的值保存至字典的第一个key中,...

30350
来自专栏web编程技术分享

JAVA定时任务TimerTask的使用

38150
来自专栏猛牛哥的博客

aardio调用汇编代码获取返回值的方法

aardio编程软件可以对外部进程注入汇编代码,并且转换成aardio函数很方便的调用。有时候需要获取汇编代码内的某些数据,把这个数据作为aardio函数的返回...

23320
来自专栏Java编程

Java虚拟机体系结构

一个运行时的Java虚拟机实例的天职是:负责运行一个java程序。当启动一个Java程序时,一个虚拟机实例也就诞生了。当该程序关闭退出,这个虚拟机实例也就随之消...

77110
来自专栏racaljk

C++模板显式实例化,隐式实例化,特化(具体化,偏特化)辨析

最近再次看C++ PRIMER PLUS的时候看到这个部分感觉讲得很烂,前后口径不一致,所以写个辨析让自己明白的同时也希望对此不太清楚的朋友能搞懂。

13120
来自专栏跟着阿笨一起玩NET

C#修饰符

C#中类及类型成员权限访问修饰符有以下四类:public,private,protected,internal。

25820
来自专栏决胜机器学习

正则表达式学习笔记

正则表达式学习笔记 (原创内容,转载请注明来源,谢谢) 首先,学习正则表达式,很推荐一篇博客,http://www.cnblogs.com/deerchao...

368120
来自专栏前端进阶之路

尾调用和尾递归

尾调用是函数式编程中一个很重要的概念,当一个函数执行时的最后一个步骤是返回另一个函数的调用,这就叫做尾调用。

18710

扫码关注云+社区

领取腾讯云代金券