架构师的成长之路初片-shell-(while、case、funtion())
一, 循环
while循环,可以根据条件测试决定循环次数,可以实现无限循环
语法结构:
while 条件测试 //如果条件测试成功,就执行下面的指令,然后再回
来继续看条件测试能否成功,如果成功就继续执行指令,且可以实现无限
循环,一旦发现条件测试失败了,就立刻终止循环
do
执行指令
done
例子:1
#!/bin/bash
x=1
while [ $x -le 5 ] //通过条件测试还可以决定执行任务的次数
do
echo abc
sleep 0.1
let x++ //将x+1
done
例子:2
循环的嵌套
#!/bin/bash
for i in a b
do
for j in x y
do
echo $i
echo $j
done
done
---------------------------------------------------------------------------
二,case分支,功能类似if,语句比if精简
语法:
case 调用变量的名称 in //如果调用的变量内容与下面某个模式一致,就执行模式下面的指令
模式1) //这里的模式可以有很多
执行指令;; //指令需要用双分号结尾,如果一个模式有多个指令,那只需在该模式的最后一条指令后加双分号即可
模式2)
执行指令;;
模式N)
执行指令;;
*) //如果上述模式都没有被匹配,那就匹配这个
执行指令
esac
例子:1
例子:2
--------------------------------------------------------------------------------------------------------------
工具小点:
netstat 命令可以查询系统启动的端口信息
-n以数字格式显示端口号
-t显示TCP连接的端口
-u显示UDP连接的端口
-l显示服务正在监听的端口信息,如httpd启动后,会一直监听80端口
-p显示监听端口的服务名称是什么(也就是程序名称)
----------------------------------------------------------------------
如果想在linux中修改输出文字的颜色,可以使用下列方式
echo -e "\033[32mABCD\033[0m" //-e选项可以激活后面特殊字符的作用,相当于使用echo的扩展功能,\033[32m代表设置颜色为绿色,ABCD是输入内容,\033[0m代表还原颜色。
---------------------------------------------------------------------------------------------------------------------------------------------------
三,函数(funtion),可以将公共的语句块定义成一个名称,实现精简脚本且方便后期调用的效果还增加了可读性
例:
#!/bin/bash
a() { //定义函数
echo abc
echo xyz
}
a //调用函数,相当于执行上述两个echo任务
a //可以反复调用
例子:
#!/bin/bash
a(){ //定义函数
echo -e "\033[$1m$2\033[0m" //输出不同颜色的文本内容,并加入位置变量
}
a 31 ABCD //调用时函数后面可以写位置变量内容,31就是$1 ABCD是$2
a 32 XYZS
a 33 WEFE
a 34 WEF1
a 35 NBTJ
------------------------------------------------------------------------------------
四:循环的控制
exit 可以终止循环,但同时也终止脚本
break 可以终止循环,继续执行循环之后的任务
continue 可以终止当前循环,继续下一次循环
例子:
编写脚本,可以为用户进行整数求和,如果用户输入
0则终止脚本 并输出之前整数之和
#!/bin/bash
x=0 //先定义了一个x,表示用户给的整数之和,一个都没给时就是0
while :
do
read -p "请输入一个整数求和(0是结束):" n
[ -z $n ] && continue //如果n是空值,就重新循环
[ $n -eq 0 ] && break //如果n是0,就退出循环
let x+=n //将x+n
done
echo "整数之和是$x"
-----------------------------------------------------------------------------------------------------