双层循环和循环控制语句 while与until

双层循环和循环控制循环语句

exit:满足条件立马跳出,无论有几层

echo 打印

echo -n 表示不换行输出

echo -e 表示输出转义字符

\b:相当于退格键(backspace)

\n:换行,相当于回车

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

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

[root@test2 opt]# vim test3.sh
for i in {1..9}
do
 for ((j=1;j<i;j++))
   do
    echo -n "$i*$j=$(($i*$j))"
  done
echo 
done
​
[root@test2 opt]# sh test3.sh 
1*1=1
2*1=2
3*1=33*2=6
4*1=44*2=84*3=12
5*1=55*2=105*3=155*4=20
6*1=66*2=126*3=186*4=246*5=30
7*1=77*2=147*3=217*4=287*5=357*6=42
8*1=88*2=168*3=248*4=328*5=408*6=488*7=56
9*1=99*2=189*3=279*4=369*5=459*6=549*7=639*8=72

break控制语句

[root@test2 opt]# vim test3.sh
for i in {1..3}
do
 for j in {1..5}
do
if [ $j -eq 3 ]
then
break 2
#循环控制,continue和break默认数值就是1.
fi
echo $j
done
done
​
[root@test2 opt]# sh test3.sh 
1
2

continue控制语句

[root@test2 opt]# vim test3.sh
for i in {1..3}
do
 for j in {1..5}
do
if [ $j -eq 3 ]
then
continue  2
#循环控制,continue和break默认数值就是1.
fi
echo $j
done
echo $i
done
​
[root@test2 opt]# sh test3.sh 
1
2
1
2
1
2

set -x 开启调试模式

set +x 关闭调试模式

while和until的语法

while:满足条件就执行循环,不满足条件才会推出。

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

while [判断条件]
do
•     命令序列
done
求1-100的和
[root@test2 opt]# vim test3.sh
i=0
sum=0
while [ $i -lt 100 ]
do
 let i++
 sum=$(($sum + $i))
echo $sum
done
求奇偶
i=0
sum=0
sum2=0
while [ $i -lt 100 ]
do
let i++
if (( $i%2==0 ))
then
 sum=$(($sum + $i))
else
sum2=$(($sum2+$i))
fi
echo $sum
done
echo $sum2
while死循环

while true #永远为增,死循环

while [ 1 -eq 1 ]

while:

until循环:

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

[root@test2 opt]# vim test3.sh
i=0
until [ $i -gt 10 ]
do
 let i++
echo $i
done
[root@test2 opt]# sh test3.sh 
1
2
3
4
5
6
7
8
9
10
11

测试一个网段,c类的私有地址 32位的网段,测试可以ping同的保留到/opt/hosts.txt,如果不通提示不通即可。1-254

for i in {1..254}
do
{
ping -c 2 192.168.65.$i
if [ $? -eq 0 ]
then
echo ping -c 2 192.168.65.$i >> /opt/hosts.txt
else
echo "不通"
fi
}&
done
echo $i
wait
[root@test2 opt]# cat /opt/hosts.txt
ping -c 2 192.168.65.2
ping -c 2 192.168.65.21
ping -c 2 192.168.65.2
ping -c 2 192.168.65.21

设置密码错误三次
[root@test2 opt]# vim test1.sh
sum=123456
for ((i=1;i<=3;i++))
do
read -p "输入密码" a
if [ "$sum" -eq "$a" ]
then
echo "正确"
break
elif [ "$sum" -ne "$a" ]
then
echo "不正确"
fi
echo "被锁定"
done
[root@test2 opt]# sh test1.sh 
输入密码123
不正确
输入密码123
不正确
输入密码123
不正确
被锁定

作业1

[root@test2 opt]# vim test1.sh
for user in $(cat /opt/users.txt)
do
cat /etc/passwd | awk  -F: '{print $1}' | grep "$user"
if [ $? -eq 0 ]
then
echo "用户存在"
​
     mima=$(cat /etc/passwd | grep "$user" | awk -F: '{print $2}')
     if [ "$2" -eq "!!" ] || [ "$2" -eq "-z" ]
     then
      echo "$user 用户无密码"
     echo 123456 | passwd --stdin $user
     echo "$user 用户有密码"
     fi
else
useradd $user
echo 123 | passwd --stdin $user
fi
done
​
[root@test2 opt]# sh test1.sh 
更改用户 wbl1 的密码 。
passwd:所有的身份验证令牌已经成功更新。
更改用户 wbl2 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@test2 opt]# cat users.txt
wbl1
wbl2

作业2

[root@test2 opt]# vim test2.sh
​
#使用循环语句,将一个0-255的十进制数转化为8位的二进制数
sum=$((RADOM%256))
read -p "输入0-255的整数" sum
for ((i=1;i<=8;i++))
do
a=$(($sum%2))$a
sum=$(($sum/2))
done
echo $a
​
[root@test2 opt]# sh test2.sh 
输入0-255的整数200
11001000
​

相关推荐

  1. whileuntil语句

    2024-06-18 12:52:04       7 阅读
  2. C语言分支循环语句while

    2024-06-18 12:52:04       23 阅读
  3. Py-While循环语句

    2024-06-18 12:52:04       33 阅读
  4. while 循环语句

    2024-06-18 12:52:04       19 阅读

最近更新

  1. TCP协议是安全的吗?

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

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

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

    2024-06-18 12:52:04       20 阅读

热门阅读

  1. Doris 系统日志和审计日志

    2024-06-18 12:52:04       6 阅读
  2. 【人工智能】深度解读 ChatGPT基本原理

    2024-06-18 12:52:04       10 阅读
  3. mysql竖表变横表不含聚合

    2024-06-18 12:52:04       8 阅读
  4. Chrome 报错: ERR_ACCESS_DENIED

    2024-06-18 12:52:04       7 阅读
  5. AI大战:通用VS垂直模型,谁主未来?

    2024-06-18 12:52:04       7 阅读
  6. xpath爬取4399的最新游戏系列

    2024-06-18 12:52:04       6 阅读
  7. Day05 数组

    2024-06-18 12:52:04       5 阅读
  8. C++中的八大设计原则

    2024-06-18 12:52:04       5 阅读
  9. window环境C++读取带中文的文档乱码问题

    2024-06-18 12:52:04       8 阅读
  10. 使用微信小程序制作画布

    2024-06-18 12:52:04       5 阅读
  11. 比较两个对象相同对象不同值

    2024-06-18 12:52:04       6 阅读
  12. “==“和 equals 方法究竟有什么区别?

    2024-06-18 12:52:04       8 阅读