网络知识 娱乐 Shell循环语句详解--for循环

Shell循环语句详解--for循环

文章目录

  • 一.for循环基本格式
  • 二.for循环脚本
    • 2.1测试主机状态
    • 2.2添加用户
    • 2.3乘法表
  • 三.总结

引言:在shell编程中,除了选择判断之外,对一些特殊情况需要进行循环操作,比如遍历目录文件,批量添加用户等操作,都需要循环操作

一.for循环基本格式

语法格式:

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

在这里插入图片描述
for循环执行次数,取决于取值列表中的变量个数

for i in {1..5};do echo $i;done
{1..5}为取值范围1到5
echo $i 输出当前的取值

在这里插入图片描述

for((i=1;i<=5;i++));do echo $i;done
使用(())双括号,可以支持C语言的一些命令
i=1;i<=5;i++ #i初始值为1,如果i小于等于5时执行循环,每次循环后+1

在这里插入图片描述

for i in `seq 5`;do echo $i;done
seq 5{1..5}效果一样

在这里插入图片描述

for i in `seq 5`;do echo "hello world";done
使用变量i 循环5次
每次执行echo "hello world"命令

在这里插入图片描述
使用for循环遍历当前目录
在这里插入图片描述

二.for循环脚本

利用for循环,实现的简单脚本

2.1测试主机状态

检测局域网内,主机存活状态

#!/bin/bash
for IP in `cat /root/for/ip.txt`    #ip文件为存放ip地址的
do
  ping -c 3 -i 0.2 -w 3 $IP &>/dev/null #-c 3 ping3次主机 -i 0.2ping主机间隔 -w 3ping主机超时间隔
  if [ $? -eq 0 ];then
  echo "host $IP is up"
  else echo "host $IP is down"
  fi
done

在这里插入图片描述

在这里插入图片描述

2.2添加用户

利用for循环与if条件语句,进行批量添加用户

#!/bin/bash
for user in `cat /root/for/a.txt`    #a.txt为存放用户名单文件
do
  if grep $user /etc/passwd &>/dev/null; then   #检查用户是否存在 
     echo "$user用户已经存在"
  elif [ -d /home/$user ];then          #检查home下是否存在和用户相同的目录 
     echo "$user用户存在宿主目录"    
  else useradd $user                    #添加用户并设置初始密码 
       echo "123456" |passwd --stdin $user &>/dev/null  
       echo "$user用户已经创建,初始密码为:123456"
  fi
done

在这里插入图片描述

在这里插入图片描述
用户状态存在或存在异常
在这里插入图片描述

2.3乘法表

利用for循环,打印99乘法表

#!/bin/bash
for ((i=1;i<=9;i++))     #此处也可以写  for i in {1..9}
  do
     for ((j=1;j<=i;j++))  #此处也可写 for j in `seq $i`
       do echo -n -e "$j*$i=$[j*i]t" #-n不换行输出;-e使用转义符;t横向制表;若不用-e,则t为普通字符
       done
  echo
  done

在这里插入图片描述
在这里插入图片描述

三.总结

1.for循环在实际生成中应用非常多,避免人工重复的去操作某个事情
2.for循环中的列表支持正则表达式
3.for循环中使用(()),双括号内支持C语言的命令
4.for循环中的变量,只是循环去取值列表中取值,然后进行do操作,所以取值列表中的参数个数,决定了循环的次数