Shell循环语句及中断语句的使用

 更新时间:2023年05月09日 09:57:32   作者:雾秋.  
本文主要介绍了Shell循环语句及中断语句的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

for循环语句

读取不同的变量值,用来逐个执行同一组命令

for 变量名 in 取值列表
do                   
   命令序列
done

遍历

for i in {1..10}
      或 $(seq 1 10)
      或 ((i=1; i<=10; i++))
do
echo $i
done 

for i in {1..10..2} 
      或 $(seq 1 2 10)
      或 ((i=1; i<=10; i++))
do
echo $i
done 

例题1:批量添加用户

①创建用户名的文件

②编写脚本

#!/bin/bash
a=$(cat name.txt)
 for i in a
do
 useradd $i
 echo "123456" | passwd --stdin $i
done

③验证

例题2:根据IP地址检查主机状态

#!/bin/bash
for i in 192.168.100.{1..20}
do
  ping -c 3 -i 0.5 -W 2 $i &> /dev/null
if [ $? = 0 ]
 then
  echo "$i online"
 else
  echo "$i offline"
fi
done

while循环语句

重复测试某个条件,只要条件成立则反复执行

while 条件测试操作
do
   命令序列
done
#!/bin/bash
i=0
while (($i <=10))
do
echo "$i"
let i++
done

例题1 猜价格游戏

#!/bin/bash
price=$[$RANDOM % 1000]
a=0
times=0
echo "猜猜商品价格是多少"
while [ $a -eq 0 ]
do
let times++
read -p "请输入你猜的价格:" b
if [ $b -eq $price ];then
  echo "yes!"
  let a++
elif [ $b -gt $price ];then
  echo "你猜大了!"
elif [ $b -lt $price ];then
  echo "你猜小了!"
fi
done
echo "你总共猜了 $times 次"

例题二:批量添加用户

#!/bin/bash
i=0
while [ $i -le 4 ]
 do
 let i++
useradd stu$i
 echo "123456" | passwd --stdin stu$i
done

until循环语句

重复测试某个条件,只要条件不成立则反复执行

until 条件测试操作
do
   命令序列
done
#显示1-10的整数
#!/bin/bash
i=1
until [ $i -gt 10 ]
do
 echo "$i"
 let i++
done

例题:计算1~50的值

#!/bin/bash
i=1
sum=0
until [ $i -gt 50 ]
do
 sum=$(($sum+$i))
 let i++
done
 echo "$sum"

中断(break和continue)

①break

break跳出单个循环

#!/bin/bash
for i in {1..5}
do
echo "外层循环 $i"
 for b in {1..5}
 do
 if [ $b -eq 3 ]
  then
  break
 fi
  echo "内层循环 $b"
done
done

②continue

continue中止某次循环中的命令,但不会完全中止整个命令

#!/bin/bash
for i in {1..5}
 do
  echo "外层循环 $i"
  for b in {1..5}
 do
 if [ $b -eq 3 ]
  then
  continue
 fi
  echo "内层循环 $b"
 done
done

IFS字段分割符

默认包含空格,制表符,换行符

1.修改
IFS=$'\t\n'
修改成只换行
IFS=$'\n'
IFS=':'
IFS=','
2.备份
IFS. OLD=$IFS
IFS=$'\n'
...
IFS=$IFS.OLD

例题:输出环境变量PATH所包含的所有目录以及其中的所有可执行文件

#!/bin/bash
OLDIFS=$IFS
IFS=':'
  for i in $PATH
 do
  for a in $i/*
 do
 if [ -x $a -a -f $a ];then
  echo "$a 文件有执行权限"
 fi
 done
done
IFS=$OLDIFS

到此这篇关于Shell循环语句及中断语句的使用的文章就介绍到这了,更多相关Shell循环语句及中断语句内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • shell脚本实现Hbase服务的监控报警和自动拉起问题

    shell脚本实现Hbase服务的监控报警和自动拉起问题

    这篇文章主要介绍了shell脚本实现Hbase服务的监控报警和自动拉起,主要是通过服务名监控和端口监控,通过企业微信消息通知脚本,对此内容感兴趣的朋友跟随小编一起看看吧
    2022-11-11
  • ps命令输出进程状态S+的含义解析

    ps命令输出进程状态S+的含义解析

    这篇文章主要介绍了ps命令输出进程状态S后面加号的含义,本文通过ps命令输出说明,感兴趣的朋友跟随小编一起看看吧
    2019-12-12
  • 检查linux网络状态的两个脚本

    检查linux网络状态的两个脚本

    检查linux网络状态的两个脚本,包括通过定时收发email检测网络连通性、定时检测网络状态通过email发送,有需要的朋友可以参考下
    2013-02-02
  • Shell中关于exit 0的那些坑

    Shell中关于exit 0的那些坑

    在 shell 编程中,需慎用 exit 0,本文主要介绍了Shell中关于exit 0的那些坑,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • shell遍历目录处理特定目录的脚本代码

    shell遍历目录处理特定目录的脚本代码

    删除文件,目录结构为:ip/年份/月份,每个人都有一份这样的目录现需要删除2012年以前的所有文件,2012年以后的删除特定月份
    2013-02-02
  • 一个简单的linux命令 mkdir

    一个简单的linux命令 mkdir

    这篇文章主要介绍了一个简单的linux命令mkdir,mkdir 命令用于创建指定名称的目录,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-12-12
  • 用shell+sendmail实现服务器监控报警小脚本

    用shell+sendmail实现服务器监控报警小脚本

    用shell+sendmail写的服务器监控报警小脚本,有需要的朋友可以参考下
    2013-03-03
  • Bash Shell脚本学习小结

    Bash Shell脚本学习小结

    今天需要写一个Shell脚本。很简单,判断一个日志文件是否大大于2G,如果大于2G则删除。久了没有写bash,竟然一点都想不起来写了。于是复习了一下,下面对今天的学习做个小结
    2013-01-01
  • Linux实现压缩文件的生成与查看的常用命令总结

    Linux实现压缩文件的生成与查看的常用命令总结

    如果你是后端程序员,我想你一定见过*.tar.gz、*.zip、*.jar后缀的文件吧,这些都是压缩文件,那这些文件都是怎么生成的,又有哪些关键区别呢?本文将带你一起了解这些文件和配套的操作命令,以及其经常使用的场景
    2022-09-09
  • Shell脚本避免重复执行的方法

    Shell脚本避免重复执行的方法

    这篇文章主要介绍了Shell脚本避免重复执行的方法的,本文给出的代码只要放在需要执行的脚本头部即可避免重复执行,非常方便实用,需要的朋友可以参考下
    2015-01-01

最新评论