概述
一.shell中的for循环
1.for循环的语法格式
shell中的 for 循环中可以使用 break 和 continue 关键字来跳出循环, 和java 用法一致。
常用的for循环结构有三种:
粗略的结构:
for 条件
do
循环主体
done
<1>语法一:
for 变量 in 值1 值2 值3...
do
循环主体
done
或者
for 变量 in {起始值..终止值} #这里面的起始值和终止值必须是纯数字,不能是$a,即不能是变量的值
do
循环主体/命令
done
示例1:
示例2:
<2>语法二:
for 变量 in `命令`
do
循环主体
done
示例3:
<3>语法三:
for ((初始值;循环控制;变量变化))
do
循环主体
done
示例4:
2.for的嵌套循环
3.for循环的练习题
<1>练习1:编写脚本测试172.25.254网段中的主机网是否是通的。
如果是通的,就显示172.25.254.主机号 is up;如果是不通的,就显示172.25.254.主机号 is down。
脚本内容
脚本运行结果
<2>练习2:编写脚本实现倒计时10秒。
显示 Time 秒数
脚本内容
脚本运行结果
<3>练习3:编写脚本实现从输入的分钟数和秒数开始改进行时间的倒计时。
显示 Time 分钟:秒
方法一:将分钟数化为秒数
脚本内容
#!/bin/bash
read -p "请输入分钟数和秒数:" a b
let time=$a*60+$b
#for i in {$time..1} #这行代码的写法是错误的。{起始值 终止值},这里的起始值和终止值都必须是纯数字,不能写成某个变量的值
for ((i=$time;i>0;i--))
do
echo -n "TIME `expr $i / 60`:`expr $i % 60` "
echo -n -e "r"
sleep 1
done
脚本运行结果
方法二:利用for双循环实现
脚本内容
脚本运行结果
<4>编写脚本实现打印9*9乘法表。
显示1*1=1
2*1=2 2*2=4
.................................
写法一:
脚本内容
脚本运行结果
写法二:
脚本内容
脚本运行结果
二.shell中的while循环
1.while循环的语法格式
for循环适用于事先知道循环的次数,对于实现不知道循环的次数,for循环将会束手无策。而while循环可以解决实现不知道循
环次数这类问题。对于事先知道循环次数的问题,for循环和while循环是相通的,for循环能解决的问题,while循环也可以解决。
常用的while循环的结构有三种:
粗略的结构:
while 条件
do
循环主体
done
<1>语法一:
初始值
while [ 条件判断语句 ]
do
循环主体
变量变化 #这里变量变化的方式有两种,一种是((a++)),另外一种是a=`expr $a + 1`
done
示例1:
<2>语法二:
初始值
while ((条件判断语句))
do
循环主体
变量变化 #这里变量变化的方式有两种,一种是((a++)),另外一种是a=`expr $a + 1`
done
示例2:
<3>语法三:死循环(不同于for循环的地方,能解决实现不知道循环次数的问题的原因所在)
while true
do
循环主体
done
示例3:
2.while循环的练习题
编写一个脚本,使用while循环语句新建用户xin{1..20},并且设置这些用户的密码都为"123456"
脚本内容
脚本执行结果
三.shell中的if条件判断(else语句是可以没有的)
1.if条件判断的语法格式
常用的if条件判断有三种结构:
<1>单分支if语句
if 条件判断;then #其中条件判断可以是linux的命令,也可以是[ ]命令的条件判断语句
语句体
fi
示例1:
<2>双分支if语句
if 条件判断;then #其中条件判断可以是linux的命令,也可以是[ ]命令的条件判断语句
语句体1
else
语句体2
fi
示例2:
<3>多分支if语句
if 条件判断;then #其中条件判断可以是linux的命令,也可以是[ ]命令的条件判断语句
语句体1
elif 条件判断;then #其中条件判断可以是linux的命令,也可以是[ ]命令的条件判断语句
语句体2
elif 条件判断;then #其中条件判断可以是linux的命令,也可以是[ ]命令的条件判断语句
语句体3
... #表示可以有多个
else
语句体...
fi
示例3:
四.shell中的case条件判断(*)语句是可以没有的)
1.case条件判断的语法格式
case条件判断适用于需要进行多重分支的应用情况。case条件判断只针对于条件判断是某个(单个匹配模式)或某些(合并
匹配模式)具体的情况而不是一个无限的区间(比如0<a<2,这个无限的区间,为什么是无限区间呢,这是因为它的值是无穷多
个)。对于条件判断是某个(单个匹配模式)具体的情况,case条件判断能实现的效 果,if条件判断也可以实现同样的效果。
case语句结构特点如下:
- case行尾必须为单词“in”,每一个模式必须以右括号“)”结束。
- 双分号";;"表示命令序列结束。
- 匹配模式中可是使用方括号表示一个连续的范围,如[0-9];使用竖杠符号“|”表示或。
- 最后的“*)”表示默认模式,当使用前面的各种模式均无法匹配该变量时,将执行“*)”后的命令序列。
常用的case条件判断的结构有两种:
<1>语法一:单个匹配模式
case $变量名 in
模式1)
命令序列1
;;
模式2)
命令序列1
;;
..... #表示可以有多个
*)
默认执行的序列
;;
esac
示例1:
<2>语法二:合并匹配模式
case $变量名 in
模式1|模式2|模式3|......) #......表示可以有多个
命令序列1
;;
模式4|模式5|.......) #......表示可以有多个
命令序列1
;;
..... #表示可以有多个
*)
默认执行的序列
;;
esac
示例2:
2.case条件判断的练习题
编写脚本,实现交互式执行对应的程序功能
https://www.jb51.net/article/43968.htm
第一种写法:(使用echo打印)
脚本内容
脚本执行结果
第二种写法:(使用awk命令中的print打印)
脚本内容
脚本运行结果
所有写法汇总:
脚本运行结果:
最后
以上就是还单身茉莉为你收集整理的Linux下的shell编程之循环(for循环,while循环)和条件判断(if条件判断,case条件判断)的全部内容,希望文章能够帮你解决Linux下的shell编程之循环(for循环,while循环)和条件判断(if条件判断,case条件判断)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复