Shell数组函数的简单入门

变量是存值的

数组存储多个值

数组下标从0开始

数组都有编号,0代表数组内第一个元素(值),1代表第二个值

数组用括号表示,值写在括号内

格式

数组名=(第一个值第二个值)

[root

centos~]#name=(zhangsanlisiwangwu)(创建数组)

[root

centos~]#age[0]=18(设置age数组第一个元素18)

[root

centos~]#age[1]=19(设置age数组第二个元素19)

[root

centos~]#age[2]=20(设置age数组第三个元素20)

[root

centos~]#echo${name[2]}(输出name组里的第二个元素)

wangwu

[root

centos~]#echo${age[2]}(输出age组里第二个元素)

20

[root

centos~]#name[4]=zhaoliu(往name组里添加第四个元素)

[root

centos~]#echo${name[*]}(输出name组里全部元素)

zhangsanlisiwangwuzhaoliu

[root

centos~]#echo${name[

]}(输出name组里全部元素)

zhangsanlisiwangwuzhaoliu

[root

centos~]#echo${#name[

]}(输出name组里元素个数)

4

实操

[root

centos~]#catname

wc-l(查看行数,出29以内的随机数,0-28)

29

[root

centos~]#vimyu.sh(制作随机数脚本)

#!/bin/bash

i=0(定义起始值,数组第一个值为0,所有定义变量起始值为0)

forxin$(cat/root/name)(写for循环,变量x帮助获取/root/name文件里的人名)

do

name[$i]=$x

(数组格式,name数组[第一个值为$i,也就是0]=$x一个人名,把一个人名赋值给数组的某一个下标,从0开始)

leti++(下标值不断增长)

done

num=$(expr$RANDOM%${#name[*]})

(首先${#name[*]}是查询数组中有多少个值(0-28)。用expr,随机数$RANDOM取余${#name[*]}(数组中值的个数),那么结果肯定是0-28个值。运算完的结果交给num变量)

echo"${name[$num]},你来回答问题"

(输出${name[$num]},数组name,$num是0-28个随机数,这样就可以随机点名29个同学了)

把多个命令括起来

一个函数代表多条命令

函数可以重复调用,可以简化代码量,可读性强

用户定义函数,在shell脚本里可以随意调用

格式

[function](可要,可不要)funname(函数名)[()]

{

action;(函数动作)

[returnint;](定义函数返回值,action里最后一条命令的返回值做整个函数的返回值)

}

想引用直接写函数名,返回值一般用不上

实操

[root

centos~]#vimhello.sh

#!/bin/bash

functionhello(){

echo"你好"

echo"吃饭了吗"

echo"你干什么去"

}

echo"见到张三"

hello

echo"见到李四"

hello

格式

跟shell脚本传参的位置变量$n一样,函数传参是在脚本里

查看端口命令

netstatsslsof

$#为个数

$*为所有位置变量内容

实操

[root

centos~]#vimserver.sh(检查服务脚本)

#!/bin/bash

server(){

netstat-lnpt

grep-q:$1

if[$?-eq0]

then

echoservicerunning

else

echoserviceclosed

fi

}

echo正在检查HTTP服务

server80

echo正在检查SSH服务

server22

echo正在检查FTP服务

server21

[root

centos~]#chmod+xserver.sh(添加执行权限)

[root

centos~]#vim/etc/profile(在最后一行添加这个脚本)

/root/server.sh

Lastlogin:SatJan:04:from..1.7(每次打开新窗口都会先检查这三个)

正在检查HTTP服务

servicerunning

正在检查SSH服务

servicerunning

正在检查FTP服务

serviceclosed

[root

centos~]#vimserver.sh(地下的$1是位置变量)

[root

centos~]#shserver.sh80

正在检查HTTP服务

servicerunning

预览时标签不可点收录于话题#个上一篇下一篇



转载请注明地址:http://www.xqopn.com//zcmbwh/92422.html
  • 上一篇文章:
  • 下一篇文章: