选择执行语句:if、case
if语句:
if语句可以嵌套;
if:
单分支:
if expression;than
do
fi
双分支:
if expression;then
do
else
do
fi
多分支:
if expression;then
do
elif expression;then
do
。。。
else
do
fi
case:
循环执行语句:for、while、until
循环体:要循环执行的代码;
进入条件:进入循环的条件;
退出条件:退出循环的条件;
for语句:
进入条件:从变量列表的第一个变量开始;
退出条件:到变量列表的最后一个变量结束;
语法:
for var in var-list;do
循环体;
done
var-list表示方法:
1、直接给出列表:a b c 。。。;{a,b,c。。。}
for i in a b c;do echo $i;done;
for i in {a,b,c};do echo $i;done;
2、整数列表:
a、{m..n}:m到n内的正整数:
{1..10}:正整数1到10;
b、`seq m n l `,引用seq命令的结果,m为初始值、n为步进值、l为范围值:
`seq 1 1 10`:正整数1到10;
3、返回列表的命令的结果引用:$(command)
$(ls /etc),/etc的所有文件组成的列表;
4、通配符:
for i in /etc/*:/etc下的所有文件组成的列表;
5、变量引用:$@,$*
read:
从基本输入读取内容存储至变量中;
read:读取变量存储在REPLY中;
-p:提示语
-t:超时时间;
-a:存入到数组;
bash -n file:检查脚本语法;
bash -x file:逐步显示脚本执行;
练手:
1、脚本:CentOS 6中/etc/rc.d/rc3.d目录下分别由多个以k开头和以s开头的文件:分别读取每个文件名,
以s开头的文件输出为‘文件名 start’,以k开头的文件输出为‘文件名 stop’
2、写一个脚本,使用ping命令探测172.16.100.0网段的主机的在线状态;
找茬:
1、F:/problems/scripts/3.sh;找出语法错误
2、while和until的特殊用法:死循环:
while true;do
until false;do
这两个都是死循环,需要在内部定义循环退出条件;
3、while的特殊用法:循环读取文件的每一行进行处理;
while read line;do
action;
done < file
line并不是既定格式用词,可由用户自由命名,while会将文件的每一行赋值给变量line;