while和until语句

while和until语句

continue:跳出当次,后续的条件成立,继续执行

break:一旦break,后续的条件不再执行

exit:满足条件,立刻提出,不论有几层。

双层循环和循环控制语句的使用,while和until的语法使用

一、echo

echo 打印

-n 表示不换行输出

-e 输出转义字符

\b 相当于退格键(backspace)

\n 相当于回车键 换行

\f 换行,换行后的新行的开头连着上一行的行尾

\t 相当于tab键 横向制表符

echo -ne 既不换行又可以使用转义符

1、九九乘法表

for i in {1..9}
do
for ((j=1;j<=i;j++))
do
 echo -ne "$i*$j=$(($i*$j))\t"
done
 echo
done

2、倒直角三角形

for ((i=5;i>=1;i--))
do
for ((j=1;j<=i;j++))
do
 echo
done
echo
done

二、双循环

1、循环控制,continue和break默认数值就是1

for i in {1..3}
 do
for j in {1..5}
 do
if [ $j -eq 3 ]
 then
# break/continue
fi
 echo $j
done
 echo $i
done

2、双循环中给continue和break赋值

for i in {1..3}
 do
for j in {1..5}
 do
if [ $j -eq 3 ]
 then
# break/continue 2
fi
 echo $j
done
 echo $i
done

3、双循环中exit使用

for i in {1..3}
 do
for j in {1..5}
 do
if [ $j -eq 3 ]
 then
 exit 2
fi
 echo $j
done
 echo $i
done

4、调试模式

set -x
# 开启调试模式
for i in {1..3}
 do
for j in {1..5}
 do
if [ $j -eq 3 ]
 then
# break/continue
fi
 echo $j
done
 echo $i
done
sex +x
# 关闭调试模式

三、while和until的语法

1、while 满足条件就执行循环,不满足才会退出

适用条件:死循环,不知道循环多少次,需要主动结束循环,或者达到条件才结束循环

2、whlie格式

while [判断条件]
do
 命令序列
done
# 在循环外面定义
while true 永远为真,死循环
while [ 1 -eq 1 ]
while:

3、while练习

3.1 1~100求和?

i=0
sum=0
while [ $i -lt 100 ]
do
 let i++
 sum=$(($sum+Si))
done
echo $sum

3.2 1~100分别求出奇数和,偶数和

i=0
sum1=0
sum2=0
while [$i -lt 100 ]
do
 let i++
 if [ $(($i%2)) -eq 0 ]
then
 sum1=$(($sum1+$i))
else
 sum2=$(($sum2+$i))
fi
done
echo $sum1
echo $sum2

4、untile循环

条件不满足才执行循环,一旦条件成立,循环终止

until [ 条件测试]
do
 命令序列
done

5、练习

5.1 打印出/opt目录下,所有的文件(包括目录)

for file in /opt/*
do
echo $file
done

5.2 利用for循环,将/opt目录下,所有一.txt为结尾的文件合并成一个文件,合并到xy102.txt

for file in /opt/*.txt
do
cat $file >> /opt/xy102.txt
done

5.3 测试一个网段,c类的私有地址,32位的网段,测试可以ping通的保留到/opt/host.txt,ping不通,提示不通即可,1~254

read -p "请输入一个网段的开头(192.168.100.):" ip
for i in {1..254}
do
{
ping -c 2 $i$ip &> /dev/null
if [ $? -eq 0 ]
then
 echo "$ip$i is onine"
 echo "$ip$i >> /opt/host.txt "
else
 echo "$ip$i in offline"
fi
}&
#把整个循环体的代码看作一个整体内容,相当于并行,&循环成立的内容放入后台执行
done
wait
#wait的执行结束之后,直接突出,并发执行

5.4 输入整数,用+、-、*、/、%进行运算

while true 
do
 read -p "输入第一个数字:" num1
 read -p "输入运算符号(+、-、*、/、%)" fh
 read -p "输入第二个数字:" num2
if [ "$fh" == "+" ]
then
 echo "结果为:$(($num1+$num2))"
elif [ "$fh" == "-" ]
then
 echo "结果为:$(($num1-$num2))"
elif [ "$fh" == "*" ]
then
  echo "结果为:$(($num1*$num2))"
elif [ "$fh" == "/" ]
then
 if [ $num2 -eq 0 ]
then
 echo "除数不能为零"
else
 echo "结果为:$(($num1/$num2))"
fi
 fi

5.5 我们定义好一个密码,脚本判断密码输入是否正确,正确的密码是123456,输入正确,提示正确,输入3次,3次错误,密码被锁定

i=1
psd="123456"
while [ $i -le 3 ]
do
read -p "请输入密码:" key
if [ "$key" == "$psd" ]
then
 echo "密码正确"
 exit
else
 echo "输入错误"
 let i++
fi
done
echo "密码输入超过3次,已锁定"

相关推荐

  1. whileuntil语句

    2024-06-18 19:24:12       6 阅读
  2. C语言分支循环语句while

    2024-06-18 19:24:12       20 阅读
  3. C语言——!(--x)!(-x)以及while(!(--x)) while(!(-x))

    2024-06-18 19:24:12       27 阅读
  4. 14.bash shell中的for/while/until循环

    2024-06-18 19:24:12       43 阅读
  5. Linux命令-break命令(结束for,whileuntil循环。)

    2024-06-18 19:24:12       27 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-18 19:24:12       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-18 19:24:12       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-18 19:24:12       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-18 19:24:12       18 阅读

热门阅读

  1. PAT B1012. 数字分类

    2024-06-18 19:24:12       7 阅读
  2. Leetcode热题100

    2024-06-18 19:24:12       5 阅读
  3. 如何优化频繁的v-if造成的页面卡顿

    2024-06-18 19:24:12       6 阅读
  4. MyBatis中的延迟加载与分步查询总结

    2024-06-18 19:24:12       6 阅读
  5. DDL与DML语句

    2024-06-18 19:24:12       4 阅读
  6. vtune安装

    2024-06-18 19:24:12       5 阅读
  7. SQL server LAG方法改造 适配 SQL server 2008

    2024-06-18 19:24:12       7 阅读
  8. 【DNS】

    2024-06-18 19:24:12       5 阅读
  9. Python 正则表达式语法

    2024-06-18 19:24:12       5 阅读
  10. 编程入门笔记:从基础到进阶的探索之旅

    2024-06-18 19:24:12       5 阅读