变量是存值的
数组存储多个值
数组下标从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~]#catnamewc-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
预览时标签不可点收录于话题#个上一篇下一篇