当前位置:网站首页>Shell:循环语句
Shell:循环语句
2022-08-03 18:12:00 【IT.cat】
目录
一、for循环
在实际工作中,经常会遇到某项任务需要多次执行的情况,而每次执行时仅仅是处理的 对象不一样,其他命令相同。例如,根据通讯录中的姓名列表创建系统账号,根据服务器清 单检查各主机的存活状态 当面对各种列表重复任务时,使用简单的 if 语句已经难以满足要求,而顺序编写全部代 码更是显得异常烦琐、困难重重
1.1、for的语句格式
第一种:for 变量名 in {list}
遍历
for 变量名 in {list}
do
command
done
例子:
#!/bin/bash
for i in {1..5} #{}里面不识别变量
do
echo $i
done
for i in `seq 5`
do
echo $i
done
附1小技巧:花括号{}和seq在for循环的应用:
for i in {1..50..2} 1-50的奇数
for i in {2..50..2} 1-50的偶数
for i in {10..1} 1-10倒序排列
for i in $(seq 10) 1-10正序排列
for i in $(seq 10 -1 1) 1-10倒序排列
for i in $(seq 1 2 10) 1-10的奇数,中间为步长
for i in $(seq 0 2 10) 1-10的偶数,中间为步长
第二种:for ((expr1;expr2;expr3))
for ((expr1;expr2;expr3))
do
command
done
expr1:定义变量并赋初值
expr2:决定是否循环
expr3:决定循环变量如何改变,决定循环什么时候退出
例子
#!/bin/bash
sum=0
for ((i=1;i<=100;i+=2))
do
let sum=$i+$sum
done
echo "1-100的奇数和为:$sum"
将for和if结合使用的例子
#!/bin/bash
a=$(($RANDOM%100+1))
num1=0
for ((i=0;i<=20;i++))
do
read -p "请输入猜的数字:" num
if [ $num1 -eq $num ]
then
echo "数字重复,重输入"
else
num1=$num
if [ $num -gt $a ]
then
echo "数大了"
elif [ $num -lt $a ]
then
echo "数小了"
elif [ $num -eq $a ]
then
echo "猜对了 猜了$(($i+1)) 次"
break
else
echo "请输入正确的数"
fi
fi
done
二、while语句
while [表达式]
while循环一般用于有条件判断的循环,若判断条件为真,则进入循环,当条件为假就跳出循环
while 表达式
do
command
done
例子
#!/bin/bash
i=1
while [ $i -le 5 ]
do
echo $i
let i++
done
输出1-100之间不能被3整除的数字
#!/bin/bash
i=1
while [ $i -le 100 ]
do
if [[ $i%3 -ne 0 ]]
then
echo "$i"
fi
let i++
done
while 死循环
#!/bin/bash
PRICE=$(expr $RANDOM % 1000)
a=0
echo "商品实际价格范围为 0-999,猜猜看是多少?"
while true do read -p "请输入你猜测的价格数目:" n
let a++
if [ $n -eq $PRICE ] ; then
echo "恭喜你答对了,实际价格是 $PRICE"
echo "你总共猜测了 $a 次"
exit 0
elif [ $n -gt $PRICE ] ; then
echo "你猜高了!"
else
echo "你猜低了!"
fi
done
边栏推荐
猜你喜欢
随机推荐
Jenkins CI平台(二)
二叉树求和路径问题解答与注记
广告电商、泰山众筹、链动2+1,这3个模式到底怎么样?
rhel8.3 系统下修改有线网卡配置信息实现联网
opencv 直方图比较
SQL代码需要供其他人复用,为什么传统的复制代码不可靠?
荧光标记多肽FITC/AMC/FAM/Rhodamine/TAMRA/Cy3/Cy5/Cy7-Peptide
Redis:哨兵
mysql之数据库账户管理与优化
你想知道的 Watch App 开发
es6新增-async函数(异步编程的最终解决方案)
六、用户身份认证
China Hashpower Conference Ascension Kunpeng Ecological Forum was held; Kuaishou established an independent to B business department…
341. Flatten Nested List Iterator
STM32——LCD—FSMC原理简介
EasyNTS上云网关断电重启后设备离线是什么原因?
WPF 实现柱形统计图
15、学习MySQL NULL 值处理
Share 14 JS functions you must know
PHP base notes - NO. 1