Shell脚本(函数,shell中的数组)

函数

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

格式:function f_name(){

command

}

函数必须放在最前面,函数名可以自己定义。

案例一:

[[email protected] shell]# vim fun.sh

#!/bin/bash

function inp() {

echo $1 $2 $3 $10 ${10} ${11} $0 $# [$*]

}

inp 1 2 3 4 5 6 7 8 9 34 55

[[email protected] shell]# sh fun.sh

1 2 3 10 34 55 fun.sh 11 [1 2 3 4 5 6 7 8 9 34 55]

注意$10并不能打印出第10个函数,当n>=10时,用{10}来获取函数。$0表示脚本名字。$#表示多少个函数。

案例二:

[[email protected] shell]# vim fun1.sh

#/bin/bash

sum() {

s=$[$1+$2]

echo $s

}

sum 22 2

[[email protected] shell]# sh fun1.sh

24

案例三:

写一个脚本,输入网卡号则显示该往卡上的ip。

#/bin/bash

ip() {

ifconfig |grep -A1 "$1" |tail -1 |awk '{print $2}'

}

read -p "please input the eth name: " e

myip=`ip $e`

echo "$e address is $myip"

运行结果:

[[email protected] shell]# sh fun2.sh

please input the eth name: ens33

ens33 address is 192.168.52.50

Shell中的数组


定义数组:

[[email protected] ~]# a=(1 2 3 4 5 6)

查看数组全部值:

[[email protected] ~]# echo ${a[@]}

1 2 3 4 5 6

[[email protected] ~]# echo ${a[*]}

1 2 3 4 5 6

查看数组单一的值:(从零开始)

[[email protected] ~]# echo ${a[0]}

1

[[email protected] ~]# echo ${a[1]}

2

[[email protected] ~]# echo ${a[2]}

3

给数组赋值或更改:

[[email protected] ~]# a[2]=aaa

[[email protected] ~]# echo ${a[*]}

1 2 aaa 4 5 6

数组的删除:

删除数组里的一个值:

[[email protected] ~]# unset a[1]

[[email protected] ~]# echo ${a[*]}

1 aaa 4 5 6

[[email protected] ~]# unset a[0]

[[email protected] ~]# echo ${a[*]}

aaa 4 5 6

删除整个数组

[[email protected] ~]# unset a

[[email protected] ~]# echo ${a[*]}

删除笔记修改笔记

数组分片:

[[email protected] ~]# echo ${b[@]}

1 2 3 4 5 6

格式:echo ${数组名称[@]:从第几个元素开始:截取几个}

从第一个元素开始,截取2个:

[[email protected] ~]# echo ${b[@]:0:2}

1 2

从第二个元素开始,截取3个:

[[email protected] ~]# echo ${b[@]:1:3}

2 3 4

那么倒着应该怎么截取呢:

格式:echo ${数组名称[@]:0-倒数第几个元素:截取几个}

从倒数第2个元素开始,截取2个

[[email protected] ~]# echo ${b[@]:0-2:2}

5 6

数组替换

临时替换:

[[email protected] ~]# echo ${b[@]/5/6}

1 2 3 4 6 6

[[email protected] ~]# echo ${b[@]}

1 2 3 4 5 6

永久替换:

[[email protected] ~]# b=(${b[@]/5/6})

[[email protected] ~]# echo ${b[@]}

1 2 3 4 6 6

原文地址:http://blog.51cto.com/13407306/2070411

时间: 2024-11-10 12:09:04

Shell脚本(函数,shell中的数组)的相关文章

shell从函数文件中调用函数

碰到一个shell中函数调用的小问题,记录一下. shell中函数有三种调用方式,一种是在文件前面定义函数,然后在下面直接调用:一种是通过载入shell,在shell中直接调用:第三种是将函数写入文件,然后在其他shell中调用函数. 这里写一下关于第三种方法的例子: is_it_a_directory() { if [ $# -lt 1 ];then echo "is_it_a_directory:I need an argument" return 1 fi _DIRECTORY_

shell脚本介绍 shell脚本结构和执行 date命令用法 shell脚本中的变量

一.shell脚本介绍shell脚本要想写好,必须通过不断地去练习写才能写好,没有捷径要在我们拿到一个需求的时候有一个脚本的大致思路,想到需求怎么去实现shell脚本可以大大提高我们的工作效率二.shell脚本结构和执行[[email protected] ~]# mkdir shell //创建一个shell文件夹,存放实验的shell脚本[[email protected] ~]# cd shell/[[email protected] shell]# ls[[email protected

shell脚本修改json中某个字段的值

shell脚本修改json中某个字段的值 思路:通过awk来找到旧数据,然后用sed来替换旧数据 源码 config.json { "name": "the_name", "id": "132869", "content_url": "https://hot.example.com/", "enable_feature1": "true", &qu

Shell脚本——函数(function)

做为一个经常写脚本的运维人员来讲,都能发现一个问题,很多时候我们在不同的脚本里面重复的写着同一段代码.比如我们要去使用正则表达式去判断IP地址的合法性问题,如果每次都去写一遍这个匹配IP的表达式,整个表达式写下来老长老长的,0-9的数字组合看的眼都花了,是不是很累了.当然有人会说了,保存一份正确的代码之后,需要用这段代码的时候,直接粘贴到正在编写的脚本里面不就行了嘛!是没错,但这样是不是很多脚本里面都重复存放着同一段代码,额外增加了脚本的代码量.有没有一个两全其美的办法,让我们的脚本代码量又小,

20.1-4 shell脚本介绍 shell脚本结构和执行 date命令用法 shell脚本中的变量

20.1 shell脚本介绍20.2 shell脚本结构和执行20.3 date命令用法%w 星期几 %W今年的第几周cal是显示日历的时间戳可以相互查询 20.4 shell脚本中的变量 原文地址:http://blog.51cto.com/13450039/2104595

[shell脚本]-在shell中定义expect function

概述 使用shell脚本加expect 实现批量登录,互信等,免交互式操作,之前主要写两个脚本,一个是expect脚本里面主要是接受参数,进行ssh 免交互操作,另一个是shell脚本,里面调用expect的脚本,传入参数, 现在需要把expect和shell脚本内容全部合并在shell脚本中 可以用shell function 里面定义expect 例子: shell 脚本中定义function, 然后把<< EOF 所有内容,当作expect 标准输入 #!/bin/bash functi

Saiku数据库迁移后的刷新脚本-Shell脚本读取数据库中的数据(二十三)

Saiku数据库迁移后的刷新脚本 之前有谈过对saiku中的数据进行刷新,因为saiku默认会从缓存中查询数据,但是配置不使用缓存又会效率低下... 所以这里就需要做一个数据刷新,每次ETL之后都需要执行一遍数据刷新脚本. 刷新脚本主要分为两部分 1.使用shell命令从数据库中读取已有的用户信息 (因为已经做过数据迁移,数据库已经从h2转为我们自己的mysql) saikuRefresh.sh #!/bin/bash #数据库连接信息 HOSTNAME="10.11.22.33" #

利用shell脚本统计文件中出现次数最多的IP

比如有如下文件test.txt 1  134.102.173.43 2  134.102.173.43 3  134.102.171.42 4  134.102.170.9 要统计出现次数最多的IP可以利用以下shell脚本: cat test.txt | awk '{print $2}' | sort | uniq -c | sort -n -r | head -n 1 [原创]统计IP次数最多的 一条还是很常见,很实用,很简单的命令 netstat -ntu Active Internet

7个shell脚本实例--shell脚本练习必备

概述 看多shell脚本实例自然就会有shell脚本的编写思路了,所以我一般比较推荐看脚本实例来练习shell脚本.下面分享几个shell脚本实例. 一.监测Nginx访问日志Exception情况,并做相应动作 假设服务器环境为lnmp,监控出现Exception错误,并钉钉通知. #场景: #1.访问日志文件的路径:/data/logs/plateno-coupon-server/plateno-coupon-server.log#2.脚本死循环,每10秒检测一次,10秒的日志条数为300条

linux crontab定时任务运行shell脚本(shell执行sql文件)

今天做个linux定时任务(每晚12点把表汇总). 顺便写个博客记录一下~~ 为什么用linux定时任务,而不是在项目加定时任务呢?原因就是防止因为各种原因项目崩溃..所以就用了更加稳定的linux定时任务(我是这么想的( ^_^ )). 起初我感觉很简单,以为顶多半小时就搞定了,,,结果从10点弄到12点半才搞定(主要是我英语太渣和数据库报错导致)... ︿( ̄︶ ̄)︿废话到此结束--------------- crontab 格式     * * * * *      XXX 分    时