Linux系统shell脚本(三)
条件判断case语句
格式
#!/bin/bash
#case $1 in
#[0-9])
# command1
#;;
#[a-z])
# command2
#;;
#*)
# command3
#;;
#esac
案例1:条件1【0-9】输出的是数字;条件2【a-z】输出是字母;都不是输出都不是
#!/bin/bash
case $1 in
[0-9])echo "number"
;;
[a-z])echo "letter"
;;
*)echo "no!"
;;
esac
案例二:对nginx服务进行启动检测
#!/bin/bash
#c2508
#nginx start or stop script
case $1 in
start)status1=$(netstat -anptu | grep [n]ginx | wc -l)if [ $status1 -ge 1 ]thenecho "进程已启动"elsenginxfi
;;
stop)status1=$(netstat -anptu | grep [n]ginx | wc -l)if [ $status1 -eq 0 ]thenecho "进程已停止"elsenginx -s stopfi
;;
reload)nginx -s reload
;;
restart)status1=$(netstat -anptu | grep [n]ginx | wc -l)if [ $status1 -eq 0 ]thenecho "进程已停止"elsenginx -s stopfi
案例三:工作选项
while true
docat <<EOF
请选择:
1.备份文件
2.清理日志文件
3.软件升级
4.软件回滚
5.删库跑路
6.按q退出
EOF
read -p "请选择工作类型:" n1
case $n1 in
1)echo "备份文件"
;;
2)echo "清理日志文件"
;;
3)echo "软件升级"
;;
4)echo "软件回滚"
;;
5)echo "删除跑路"
;;
q)exit
;;
*)
for循环语句
格式1:
# 第一种写法
for NAME [in words ...]; do commands;done# 第二种写法
for 变量 in 列表循环体
done# 第三种写法
for 变量 in 列表
do循环体
done
执行机制:
依次将列表中的元素赋值给”变量名“;每次赋值后即执行一次循环体;直到列表中的元素耗尽,循环结束
格式2:
双小括号方法,即((…))格式,也可以用于算术运算,双小括号方法也可以使用bash shell 实现C语言风格的变量操作l=10;((l++))
for ((控制变量初始化;条件判断表达式;控制变量的修正表达式))
do循环体
done
说明:
控制变量初始化:仅在运行到循环代码段时执行一次
控制变量的修正表达式:每轮循环结束后会先进行控制变量修正运算,然后在做条件判断
案例一:输出1-10
#!/bin/bash
for i in {1..10}
doecho $i
done
案例二:九九乘法表
#!/bin/bash
for i in `seq 1 9`
dofor j in `seq 1 $i`doecho -e -n "$i x $j = $[i*j]\t"doneecho
donefor ((i=1;i<=9;i++))
dofor ((j=1;j<=$i;j++))doecho -e -n "$j x $i = $[i*j]\t"doneecho
done
案例三:输出目标目录内容,并添加时间戳
#!/bin/bash
for i in $(ls /boot)
doecho ${i}.$(date +%s)
done
while循环语句
格式
hile command; do commands;donewhile condition;do 循环体 done!/bin/bash
i=1
while [ $i -le 10 ]
doecho $ilet i++
done
无限循环
while true;do循环体
done
案例:猜数游戏
脚本生成一个100以内得随机数,提示用户猜数字,根据用户得输入,提示用户猜小了或猜大了,直至用户猜对脚本结束
#!/bin/bashprice=$[RANDOM%1000]
while true
doread -p "请输入你猜的价格:" guessif [ $guess -eq $price ]thenecho "猜对了"exitelif [ $guess -lt $price ]thenecho "小了"elseecho "大了"fi
done