shell 脚本——第八节课 case、while、until
for:
for 变量 in 列表;do
循环体
done
for((初始语句; 判断语句; 值变化语句)); do
循环体
done
case:
分支
case 变量 in
PAT1)
执行语句
;;
PAT2)
执行语句
;;
*)
默认执行语句
;;
esac
while:
循环
格式:
定义初始值
while 条件判断 ; do
循环体
值变化语句
done
其他两种特殊的语句格式:
for i in $(cat /etc/passwd &> /dev/null) 错误写法
while read 变量;do
循环体($变量)
done << /path/filename
就是任性 -- 要写死循环
while true ; do
循环体
done
break 跳出循环
continue 跳出本次循环
sleep 延长多长时间后,继续向下执行命令
until :
循环
与 while 用法想用
区别:只有 判断条件为 False 的时候,才会进入循环语句;
。。
if:
if 条件判断 ;then
执行语句
fi
if 条件判断 ;then
执行语句1
else
执行语句2
fi
if 条件判断; then
执行语句1
elif 条件判断 ; then
执行语句2
elif 条件判断 ; then
执行语句3
else
执行语句4
fi
---------------------------------------------------------------------------
回顾:
1、sed
行编辑
sed [option]... {sed固定的语法格式} file ...
option : -i -n -r -e -f -l
固定语法格式:
address地址定界
1 第一行
1,10 第一行到第十行
5,$ 指定行尾
【vim . 代表光标所在当前行 : ":.,$s/^/#/"】
1~3 1,4,7,11... 指定步长
/pattern1/,/pattern2/
从模式1匹配到的行,到模式2匹配到的行
数字,+N
【vim ":.,+3s/^#//"】
/pattern1/,+N
sed的常见子命令
p 一直与-n一起使用
w 指定保存到新的文件
c 替换后面指定的内容
i 在匹配行的上一行去添加指定内容
sed "/for/i \abc" 99xfb.sh
a 在匹配行的下一行添加指定内容
sed "/for/a \abc" 99xfb.sh
d 删除
sed "/for/d" 99xfb.sh
s 替换 -- 格式:s/pattern/字符串内容/ 默认:sed只替换每行中匹配的第一内容
g -- 全部替换
\1 \2 \3 \4
& -- 在 字符串 内容中应用 pattern 匹配到的内容
2、常见的逻辑关系语句
掌握 if case while for until
判断:1、test [] [[ && || ]] 2、指定命令( `命令` $(命令) ) 需求:写一个脚本,使用chkconfig 命令,循环执行,关闭所有在5等级上的服务;
chkconfig --level 5 [name] off
[name]的遍历
for i in `chkconfig --list | awk '{print $1}'`;do
if chkconfig --list $i | grep "5:off" &> /dev/null ; then
echo "$i 这个服务已经关闭"
else
chkconfig --level 5 $i off
echo "关闭了 $i 这个服务"
fi
done
练习:
写一个脚本,完成如下任务
1、显示一个如下的菜单
Cpu)显示cpu信息
cat /proc/cpuinfo
Mem)显示内存信息
free -m
Disk)显示磁盘信息
fdisk -l
Quit)退出
quit
cat
2、提示用户选项
read -p "xxx"
3、那些是用户选项的内容
while
if语句的写法:
case语句的写法:
read
cpu
cat /proc/cpuinfo
mem
free -m
disk
fdisk -l
quit
echo ""
exit 0