shell编程-while循环-基于case分支编写脚本
for 变量名 in item
item都可以是:
字符串.
数字
命令行参数
文件名
linux命令的输出//要``或者$()引起来
for ((初始化; 条件;计算表达式))
for (( i=1;i<4;i++))
//类似c语言
for i in seq 3
do
…
done
可替换为:
for (( i=1;i<4;i++))
1.斐波那契数列脚本
最后一个数字永远是前2个数字的和
0 1 1 2 3 5 8 12 …
a (0 1)
//数组中的下标丛零开始
a[2]=expr ${a[0] }+ ${a[1] }
a[3]=expr ${a[1] }+ ${a[2] }
…
a[n]=expr ${a[n-2]} + ${a[n-1] }
a[$n]=expr ${a[$[n+2]]} + ${a[$[n-2]] }
替换为:
a[$n]=expr ${a[-2]} + ${a[-1] }
whi le循环:
语法结构:
while 条件测试
do
执行命令
done
练习while循环基本用法
条件测试:
无心的死循环
i=1
while [ $i -le 5]
do
echo $i
done
有心的死循环:
while
do
命令
//执行语句虫添加中断语句结束脚本
done
猜数字:
#!/bin/bash
num=$[RANDOM%100+1]
#电脑生成的随机数,范围是1-100
while :
do
read -p "随机数1-100,你猜: " guess
if [ $guess -eq $num ];then
echo"恭喜你猜对了"
exit
elif [ $guess -gt $num ];then
echo"猜打了"
else
echo"猜小了"
fi
done
升级脚本:
1.无限次数猜,统计第几次猜对的!
2.只能猜三次,猜不对不让猜了!
num=$[RANDOM%100+1]
#电脑生成的随机数,范围是1-100
i=1
while [ $i -le 3]
do
read -p “随机数1-100,你猜: " guess
if [ $i -eq 3 ];then
echo “这是你最后一次猜了”
fi
let i++
if [ $guess -eq $num ];then
echo"恭喜你猜对了”
exit
elif [ $guess -gt $num ];then
echo"猜大了"
else
echo"猜小了"
fi
done
echo “已经猜三次了”
case分支及中断循环
case分支语句:
匹配执行的方式,针对的变量预先存在的值,判断该变量
实际的取值是否和预设的值相匹配,如果匹配,就执行相应的操作
如果不匹配,就先执行预先设置好的默认操作
语法结构:
case 变量值 in
模式1)
命令序列1 ;;
模式2)
命令序列2 ;;
*)
默认命令序列
esac
#!/bin/bash
read -p "请输入你要选择的数字1-4: " num
case num in
1)
echo “is 1” ;;
2)
echo “is 2” ;;
3)
echo “is 3” ;;
*)
echo “请输入正确的数字!”
#!/bin/bash
read -p "请输入你要选择的数字1-4: " num
case num in
1)
echo “is 1 or 2” ;;
2)
echo “is 1 or 2” ;;
- echo “is 3” ;;
*)
echo “请输入正确的数字!”
case 分支实例:
网站(httpd)管理脚本:
0.首先判断httpd服务是否安装
1.输入start或者数字1,开启网站服务
2.输入stop或者数字2,关闭网站服务
3.输入restart或者数字3,开启网站服务
#!/bin/bash
rpm -q httpd
if [ $-eq 0 ] ;then
read -p "please 1nput your select :"num
case $num in
1 |start)
systemctl start httpd ;;
2 |start)
systemctl start httpd ;;
3 |start)
systemctl start httpd ;;
*)
echo “请输入正确的值”
esac
else
yum -y install httpd
fi