Linux运维工程师必备:Shell编程中while条件判断的用法

发布时间:2023-05-13

一、while循环的基本概念

while command
do
    statements
done

使用while循环,当command命令返回真(0)时,执行statements语句,然后再次执行command命令进行判断,直到command命令返回假(非0)时,跳出循环体。

二、while循环结合read命令实现遍历文件内容

cat file.txt | while read line
do
    echo $line
done

使用read命令以行为单位遍历file.txt文件内容,每次读取一行,赋值给变量line,然后执行echo语句将line变量的值输出。

三、使用while循环和条件判断实现自动备份脚本

#!/bin/bash
backup_dir=/backup            #备份目录
date=$(date +%Y%m%d)          #获取当前日期
if [ ! -d $backup_dir/$date ] #判断备份目录下是否存在当天的备份目录
then
    mkdir -p $backup_dir/$date #不存在则创建备份目录
fi
while [ true ]
do
    file_count=$(ls /data | wc -l) #获取/data目录下文件数量
    if [ $file_count -gt 100 ]     #如果数量大于100,则备份整个目录,并退出循环
    then
        tar -czvf /tmp/data-$date.tar.gz /data
        mv /tmp/data-$date.tar.gz $backup_dir/$date
        break
    fi
    sleep 600                      #如果数量不足100,则等待10分钟(600秒),再次检查
done

该脚本用于判断/data目录下文件数量是否超过100个,如果超过则进行整个目录的备份,并退出循环。脚本中,使用while循环持续检查文件数量,如果文件数量不多于100个,则使用sleep命令进入休眠状态(10分钟),等待下一轮判断。