首页 > 系统相关 >【Linux入门】shell基础篇——if、case、与for循环

【Linux入门】shell基础篇——if、case、与for循环

时间:2024-08-28 12:57:57浏览次数:10  
标签:case do shell echo 语句 循环 done Linux

文章目录

if的条件分支

在Shell脚本中,if语句用于根据条件表达式的结果来执行不同的代码块。if语句可以包含多个条件分支,包括else if(或写作elif)和else

基本if语句

if [ 条件表达式 ]; then
    # 如果条件为真,则执行这里的命令
    echo "条件为真"
fi

包含elseif语句

if [ 条件表达式 ]; then
    # 如果条件为真,则执行这里的命令
    echo "条件为真"
else
    # 如果条件为假,则执行这里的命令
    echo "条件为假"
fi

包含else if(或elif)的if语句

if [ 条件表达式1 ]; then
    # 如果条件1为真,则执行这里的命令
    echo "条件1为真"
elif [ 条件表达式2 ]; then
    # 如果条件1为假但条件2为真,则执行这里的命令
    echo "条件2为真"
else
    # 如果所有条件都为假,则执行这里的命令
    echo "所有条件都为假"
fi

注意

  • 条件表达式需要用方括号[]包围,并且方括号和表达式之间必须有空格。
  • 在Shell中,常见的条件测试包括文件测试(如-f表示文件存在且为普通文件)、字符串测试(如=!=用于字符串比较)和数值测试(如-eq-ne-gt-ge-lt-le分别用于等于、不等于、大于、大于等于、小于、小于等于的比较)。
  • 在Shell脚本中,thenelifelsefi是关键字,用于控制if语句的流程。

示例

#!/bin/bash

# 检查文件是否存在
if [ -f /path/to/your/file.txt ]; then
    echo "文件存在"
elif [ -d /path/to/your/directory ]; then
    echo "目录存在但文件不存在"
else
    echo "文件或目录都不存在"
fi

在这个示例中,脚本首先检查一个文件是否存在。如果文件存在,它会输出“文件存在”。如果文件不存在,它会检查一个目录是否存在。如果目录存在,它会输出“目录存在但文件不存在”。如果两者都不存在,它会输出“文件或目录都不存在”。

if的嵌套使用

#!/bin/bash

# 假设这是用户输入的性别编号和成绩
read -p "请输入性别编号(1为男生,2为女生):" gender
read -p "请输入成绩(0~10):" score

# 第一个if语句检查性别
if [ $gender -eq 1 ]; then
    # 男生
    if [ $score -ge 0 -a $score -le 5 ]; then
        echo "该男学员不合格"
    elif [ $score -ge 6 -a $score -le 7 ]; then
        echo "该男学员合格"
    elif [ $score -ge 8 -a $score -le 10 ]; then
        echo "该男学员很优秀"
    else
        echo "成绩输入错误,男生的成绩应该在0到10之间。"
    fi
elif [ $gender -eq 2 ]; then
    # 女生
    if [ $score -ge 0 -a $score -le 6 ]; then
        echo "该女学员不合格"
    elif [ $score -ge 7 -a $score -le 8 ]; then
        echo "该女学员合格"
    elif [ $score -ge 9 -a $score -le 10 ]; then
        echo "该女学员很优秀"
    else
        echo "成绩输入错误,女生的成绩应该在0到10之间。"
    fi
else
    # 性别输入错误
    echo "性别编号输入错误,请输入1(男生)或2(女生)。"
fi

在这个例子中,有两个嵌套的if语句:

  1. 外层的if语句检查用户输入的性别编号是否为1(男生)或2(女生)。
  2. 对于每个性别,内层的if语句检查成绩并根据成绩给出评价。
    如果性别编号不是1也不是2,外层的if语句将执行else部分,并输出性别编号输入错误的消息。
    对于每个性别,如果成绩不在预期的范围内,内层的if语句将执行else部分,并输出成绩输入错误的消息。

case

在Shell脚本中,case语句是一种多路分支语句,它允许脚本根据变量的值来执行不同的代码块。这种方式比多个嵌套的if-elif-else语句更简洁、更易于理解。

case语句的基本语法:

case 变量 in
    模式1)
        # 如果变量匹配模式1,则执行这里的命令
        ;;
    模式2)
        # 如果变量匹配模式2,则执行这里的命令
        ;;
    ...
    *)
        # 默认模式,如果没有任何模式匹配,则执行这里的命令
        ;;
esac

这里的esaccase语句的结束标记,类似于if语句的fi

示例

#!/bin/bash

# 读取用户输入的星期几
read -p "请输入星期几(1-7):" day

case $day in
    1)
        echo "今天是星期一"
        ;;
    2)
        echo "今天是星期二"
        ;;
    3)
        echo "今天是星期三"
        ;;
    4)
        echo "今天是星期四"
        ;;
    5)
        echo "今天是星期五"
        ;;
    6)
        echo "今天是星期六"
        ;;
    7)
        echo "今天是星期日"
        ;;
    *)
        echo "无效的输入,请输入1到7之间的数字"
        ;;
esac

case语句中,每个模式后面可以跟一个或多个模式匹配符,用于扩展模式匹配的能力。但是,在简单的使用场景中,通常不需要这些高级功能。

注意,在case语句中,每个;;表示一个模式块的结束。如果某个模式块中的命令不需要立即结束(即,你想在同一个模式块中执行多个命令),你可以简单地将这些命令依次写在该模式块中,而不需要在每个命令后面都加上;(尽管加上也无妨)。但是,模式块之间的分隔是必须的,以确保Shell能够正确地区分不同的模式块。

此外,case语句中的模式匹配是区分大小写的,这意味着11(虽然在这里它们看起来一样)会被视为相同的模式,但1One则会被视为不同的模式。如果你需要进行不区分大小写的匹配,你可能需要使用外部命令(如trawk等)来转换变量和模式的大小写,或者在case语句中使用通配符(尽管这通常不是进行不区分大小写匹配的最佳方法)。

使用if语句结合case

在某些情况下,你可能不需要完整的 case 嵌套,而是可以简单地使用 if 语句来结合多个条件。这虽然不是 case 的嵌套,但可以达到类似的效果。

#!/bin/bash

read -p "Enter a number (1-3): " number

if [ $number -eq 1 ]; then
    read -p "Enter a letter (a-c): " letter
    case $letter in
        a)
            echo "Number 1 and letter a"
            ;;
        b)
            echo "Number 1 and letter b"
            ;;
        c)
            # 这里可以模拟另一个“嵌套”的case,但实际上只是另一个case
            echo "Number 1 and letter c, entering another 'case' like scenario"
            read -p "Sub-option (x-z): " sub_option
            case $sub_option in
                x)
                    echo "Sub-option x"
                    ;;
                y)
                    echo "Sub-option y"
                    ;;
                z)
                    echo "Sub-option z"
                    ;;
                *)
                    echo "Invalid sub-option"
                    ;;
            esac
            ;;
        *)
            echo "Invalid letter for number 1"
            ;;
    esac
elif [ $number -eq 2 ]; then
    echo "Number 2 selected"
elif [ $number -eq 3 ]; then
    echo "Number 3 selected"
else
    echo "Invalid number"
fi

在这个例子中,并没有真正嵌套 case 语句,而是在第一个 case 语句的一个分支内使用了另一个 case 语句来模拟更复杂的决策流程。在Shell脚本中,通常通过函数、循环和条件语句(如 ifcase)的组合来实现复杂的逻辑。

for循环

在Bash(以及许多其他Shell)中,for循环有几种不同的格式,但主要可以归纳为两大类:基于列表的for循环和C语言风格的for循环。

for循环的基本格式

1. 基于列表的for循环

这种for循环遍历一个由空格分隔的列表(或数组)中的每个元素。
基本格式

for variable(←变量名) in list(←范围)
do(←开始)
 #(执行内容:若满足循环则作什么动作)
  command1
  command2
  ...
done(←结束)
  • variable:在每次迭代中,列表中的一个元素会被赋值给这个变量。
  • list:一个由空格分隔的元素列表,或者是一个命令的替换结果(即命令的输出),或者是一个数组。
  • do ... done:循环体,即每次迭代时要执行的命令序列。

示例

for i in 1 2 3 4 5
do
  echo "Number $i"
done

或者使用序列扩展(Bash 4.0及以上):

for i in {1..5}
do
  echo "Number $i"
done

遍历当前目录下的所有.txt文件:

for file in *.txt
do
  echo "Processing $file"
done

2. C语言风格的for循环

这种for循环提供了更复杂的迭代控制,类似于C语言中的for循环。
基本格式

for (( initialization; condition; step ))
#即:((表达式1(定义、赋值);表达式2(是否循环、退出条件);表达式3(决定循环变量如何改变、何时结束)))
do
  command1
  command2
  ...
done
  • initialization:在循环开始前执行的初始化表达式。
  • condition:在每次迭代开始前评估的条件表达式。如果条件为真(即非零),则执行循环体;如果为假(即零),则退出循环。
  • step:在每次迭代结束时执行的更新表达式。
  • do ... done:循环体,即条件为真时执行的命令序列。

示例

for (( i=1; i<=5; i++ ))
do
  echo "Number $i"
done

这个循环会打印从1到5的数字。

注意

  • Bash中的for循环是区分大小写的。
  • 在使用基于列表的for循环时,如果列表中的元素包含空格或特殊字符(如换行符、引号等),可能需要采取额外的措施来正确处理这些元素(例如,使用find ... -print0read -d ''的组合)。
  • C语言风格的for循环是Bash的一个扩展特性,可能在非Bash的Shell中不可用或行为不同。然而,它在Bash脚本中非常有用,特别是当需要执行复杂的数学计算或需要更精细地控制迭代过程时。

其他循环

基于文件的for循环

这种循环结构用于遍历一个目录中的所有文件。

for file in /path/to/directory/*; do
    command
done

其中,file是循环变量,/path/to/directory/*是目录路径。
示例:

for file in /home/user/documents/*; do
    echo "file is $file"
done

输出:

file is /home/user/documents/1.txt
file is /home/user/documents/2.txt
file is /home/user/documents/3.txt

死循环

在Shell脚本中,可以通过设置一个永远为真的条件来创建一个死循环。以下是一个简单示例:

for (( ; ; )); do
    echo "这是一个死循环"
done

在这个示例中,for循环的条件部分为空,表示永远为真。因此,循环将无限次执行,直到手动停止脚本。
为了防止死循环导致系统资源耗尽,可以在循环体内添加一些条件判断,以便在满足特定条件时退出循环。例如:

count=0
for (( ; ; )); do
    echo "这是一个死循环"
    count=$((count + 1))
    if [ $count -ge 10 ]; then
        break
    }
done

在这个示例中,我们使用一个计数器变量count来记录循环执行的次数。当count达到10时,使用break命令退出循环。
死循环可能会导致系统资源耗尽,因此在实际应用中应尽量避免使用死循环。

常用转义符

在Shell脚本中,除了常见的转义字符如反斜杠(\)、单引号(')、双引号(")等,还有许多其他特殊字符的转义用法。这些特殊字符在Shell中具有特定的含义,但通过使用转义符(主要是反斜杠\),可以改变它们的解释方式,使它们被当作普通字符处理。

  1. 变量替换和命令替换相关字符
    • $:用于变量替换。如果需要在字符串中直接使用$字符,需要对其进行转义,如\$
    • `(反引号)或$()用于命令替换。但在现代Shell脚本中,更推荐使用$()来进行命令替换,因为它更易读且支持嵌套。如果需要在字符串中直接使用反引号,也需要进行转义,但通常建议使用单引号或双引号加转义的方式来实现。
  2. 通配符和文件名扩展相关字符
    • *:通配符,匹配任意数量的字符(包括零个字符)。如果需要在字符串中直接使用*字符,需要对其进行转义,如\*
    • ?:通配符,匹配任意单个字符。同样,如果需要在字符串中直接使用?字符,也需要进行转义,如\?
    • [ ]:字符类匹配。用于匹配方括号内的任意单个字符。如果需要在字符串中直接使用方括号,特别是当它们用作字符类的边界时,可能需要进行转义,如\[\]
  3. 控制字符
    • \b:转义后相当于按退格键(backspace),但前提是"\b"后面存在字符;“\b"表示删除前一个字符,”\b\b"表示删除前两个字符。
    • \c:不换行输出,在"\c"后面不存在字符的情况下,作用相当于 echo -n; 但是当"\c"后面仍然存在字符时,"\c"后面的字符将不会被输出。
    • \n:换行,被输出的字符从"\n"处开始另起一行。
    • \f:换行,但是换行后的新行的开头位置连接着上一行的行尾。
    • \v:与\f相同。
    • \t:转以后表示插入tab,即横向制表符(tab)。
    • \\ 表示插入"\"本身;
    • \r 光标移至行首,但不换行,相当于使用"\r"以后的字符覆盖"\r"之前同等长度的字符;但是当"\r"后面不存在任何字符时,"\r"前面的字符不会被覆盖
  4. 其他特殊字符
    • &:在后台运行命令。如果需要在字符串中直接使用&字符,并且不希望它被解释为后台运行的指示符,需要对其进行转义,如\&
    • |:管道符。用于将一个命令的输出作为另一个命令的输入。如果需要在字符串中直接使用|字符,并且不希望它被解释为管道符,也需要进行转义,如\|
    • ;:命令分隔符。用于在同一行中分隔多个命令。如果需要在字符串中直接使用;字符,并且不希望它被解释为命令分隔符,需要进行转义,如\;
    • \(反斜杠本身):在需要输出反斜杠字符时,需要使用两个反斜杠来表示一个反斜杠字符,即\\

需要注意的是,转义字符\只对紧跟其后的单个字符起作用。如果需要转义多个字符,需要为每个字符分别添加\。此外,在某些上下文中(如正则表达式中),转义字符的用法可能有所不同,需要根据具体情况进行处理。

示例

从1到100所有整数的偶数和与奇数和

#!/bin/bash

num1=0                                   # 偶数和的初始值
num2=0                                   # 奇数和的初始值

for i in {1..100}
do
  if [ $((i % 2)) -eq 0 ]; then          # 判断i是否是偶数,注意这里使用$(( ))进行算术运算
    num1=$((num1+i))                     # 如果是偶数,则加到偶数和中
  else
    num2=$((num2+i))                     # 如果是奇数,则加到奇数和中
  fi
done

echo "1 到 100 中所有偶数的和为:$num1"
echo "1 到 100 中所有奇数的和为:$num2"

注意:

  1. 算术表达式:在bash中,$(( ))用于进行算术运算。在if语句的条件中使用了$((i % 2))来判断i是否为偶数。同时,在更新num1num2时,也使用了$(( ))来进行加法运算。
  2. 条件判断[ $((i % 2)) -eq 0 ]是一个条件表达式,其中-eq是等于(equal)的意思。注意[后面和]前面的空格是必须的,这是bash语法的要求。
  3. 循环范围for i in {1..100}正确地遍历了从1到100的所有整数。

关于 continuebreakexit

continue

continue 用于跳过当前循环的剩余部分,并立即开始下一次循环。它不会终止整个循环,只会跳过当前迭代。

示例:
for i in {1..5}
do
    if [ $i -eq 3 ]
    then
        continue
    fi
    echo "$i"
done

输出:

1
2
4
5

在嵌套循环中,continue [数字] 可以跳过指定层数的循环。例如:

for i in {1..10}
do
    if [ $i -eq 5 ]
    then
        continue 2
    fi
    echo "i=$i"
done

break

break 用于立即终止当前循环,并继续执行循环后面的代码。它可以带一个数字参数,表示要跳出的循环层数。

示例:
for i in {1..10}
do
    if [ $i -eq 5 ]
    then
        break
    fi
    echo "$i"
done

输出:

1
2
3
4

在嵌套循环中,break [数字] 可以跳出指定层数的循环。例如:

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

输出:

1
3

exit

exit 命令用于立即终止整个脚本的执行。当 exit 被执行时,脚本会立即停止运行,不再执行后续的任何代码。

示例:
#!/bin/bash
for j in {1..3}
do
    for i in {1..5}
    do
        if [ $i -eq 3 ]
        then
            exit
        fi
        echo "$i"
    done
done

输出:

1
2

总结:

  • continue 用于跳过当前循环的剩余部分,并立即开始下一次循环。
  • break 用于立即终止当前循环,并继续执行循环后面的代码。
  • exit 用于立即终止整个脚本的执行。
  • continue [数字]break [数字] 可以用于嵌套循环中,分别跳过或终止指定层数的循环。

set -x 和 set +x

  • set -x:开启调试模式,会在命令执行前打印出要执行的命令。
  • set +x:关闭调试模式,不再打印要执行的命令。

99乘法表

  1. 第一步:打印一行9个星号。
#!/bin/bash
for i in {1..9}
do
    echo -n "*"
done
echo
  1. 第二步:打印一个9行9列的星号正方形。
#!/bin/bash
for i in {1..9}
do
    for j in {1..9}
    do
        echo -n "*"
    done
    echo
done
  1. 第三步:将星号正方形斜砍一半形成99乘法表的基本格式。
#!/bin/bash
for i in {1..9}
do
    for ((j=1; j<=i; j++))
    do
        echo -n "*"
    done
    echo
done
  1. 第四步:将星号99乘法表格式用乘法算式替换。
#!/bin/bash
for i in {1..9}
do
    for ((j=1; j<=i; j++))
    do
        echo -ne "$i*$j=$[ $i*$j ]\t"
    done
    echo
done

倒等腰三角形

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

总结

  • 使用 set -xset +x 可以方便地开启和关闭调试模式。
  • 循环脚本实例展示了如何使用嵌套循环来生成99乘法表和倒等腰三角形。
  • 在编写循环脚本时,注意循环变量和条件语句的正确使用,以确保脚本的正确性和可读性。

其他有趣的实例

1. 循环ping测试某个网段网络连通性

#!/bin/bash
read -p "请输入需要测试的网段,格式为(192.168.233.):" ip # 读取用户输入内容为变量ip
for i in {1..254} # for循环254次,从i=1开始
do
{
    ping -c 2 -W 2 $ip$i &>/dev/null # 指定ping包为2个超时结束时间为2秒且将产生的内容全部放入null垃圾桶中,&符号表示错误输出也放入null中
    if [ $? -eq 0 ] # if条件判断如果上一个循环执行的命令是正确的则$?返回0,若等于0执行then的内容
    then
        echo "$ip$i is online" # if条件成立执行打印
        echo $ip$i >> host.txt # 将if条件成立的ip追加到host.txt文件中
    else
        echo "$ip$i is offline" # if添加判断不成立执行打印
    fi
}& # 将循环成立的内容放入后台执行
done
wait # 执行结束不等待直接退出

2. Shell 计算器

#!/bin/bash
while true
do
    read -p "请输入第一个整数:" num1
    read -p "请输入运算符:加(+);减(-);乘(*);除(/);求余(%):" fh
    read -p "请输入第二个整数:" num2
    case $fh in
        "+")
            echo "结果为:$(($num1 + $num2))"
            ;;
        "-")
            echo "结果为:$(($num1 - $num2))"
            ;;
        "*")
            echo "结果为:$(($num1 * $num2))"
            ;;
        "/")
            echo "结果为:$(($num1 / $num2))"
            ;;
        "%")
            echo "结果为:$(($num1 % $num2))"
            ;;
        *)
            echo "输入有误!"
            ;;
    esac
done

3. 猜数字游戏

#!/bin/bash
num=$((RANDOM%100+1)) # $[RANDOM]是一个0-32767的随机数,%100+1除100取余+1表示生成1-100随机数
time=0 # 定义猜对次数变量time初始值为0
while true # 生成while死循环
do
    let time++ # 每循环一次time变量自加1
    read -p "请输入您猜测的数字,范围(1-100):" user # 读取用户输入的内容为变量user
    if [ $user -eq $num ] # 条件判断分支1,如果用户输入等于随机生成执行then动作
    then 
        echo "您猜对了,您一共猜测了$time次" # if分支1条件成立执行输出
        break # if分支1条件成立则结束本次循环
    elif [ $user -gt $num ] # 条件判断分支2,如果用户输入大于随机生成执行本次then动作
    then
        echo "您猜大了,请往小猜" # 条件判断分支2成立提示用户猜大了
    elif [ $user -lt $num ] # 条件判断分支3,如果用户输入小于随机生成执行本次then动作
    then 
        echo "您猜小了,请往大猜" # 条件判断分支3成立提示用户猜小了
    fi # if语句结束
done

4. 购物脚本

#!/bin/bash
sum=0
while true # 创建无限循环的一种简写
do
    echo "1、衣服:500元"
    echo "2、裤子:400元"
    echo "3、鞋子:300元"
    echo "4、帽子:150元"
    echo "5、袜子:50元"
    read -p "请选择您想要购买的商品:" a
    case $a in
        1)
            echo "您已购买了衣服500元"
            sum=$((sum+500))
            ;;
        2)
            echo "您已购买了裤子400元"
            sum=$((sum+400))
            ;;
        3)
            echo "您已购买了鞋子300元"
            sum=$((sum+300))
            ;;
        4)
            echo "您已购买了帽子150元"
            sum=$((sum+150))
            ;;
        5)
            echo "您已购买了袜子50元"
            sum=$((sum+50))
            ;;
        *)
            echo "欢迎下次光临,您本次消费共计$sum元"
            break
            ;;
    esac
    read -p "您选择继续购物还是结算购物车?(y/n)" b
    if [ $b = y ] ; then
        continue
    elif [ $b = n ] ; then
        echo "欢迎下次光临,您本次购物共计消费$sum元"
        break
    else
        echo "请您正确输入"
    fi
done

标签:case,do,shell,echo,语句,循环,done,Linux
From: https://blog.csdn.net/Karoku/article/details/141605080

相关文章

  • 【Linux入门】shell基础篇——while循环与until循环
    文章目录while循环与until循环while循环while循环的基本格式示例:打印0到5的数字死循环的几种实现方式注意退出循环until循环、与while循环的区别until循环示例while循环方式注意有趣的实例批量建立用户批量删除用户猜价格游戏密码输入验证说明while循环与until......
  • 【Shell脚本】监控 httpd 的进程数,根据监控情况做相应处理
    #!/bin/bash################################################################################################################################需求:#1.每隔10s监控httpd的进程数,若进程数大于等于500,则自动重启Apache服务,并检测服务是否重启成功#2.若未成功则需......
  • 【Shell脚本】批量修改服务器用户密码
    Linux主机SSH连接信息:旧密码#catold_pass.txt192.168.18.217root12345622192.168.18.218root12345622内容格式:IPUserPasswordPortSSH远程修改密码脚本:新密码随机生成#!/bin/bashOLD_INFO=old_pass.txtNEW_INFO=new_pass.txtfor......
  • 【Shell脚本】iptables 自动屏蔽访问网站频繁的IP
    场景恶意访问,安全防范1)屏蔽每分钟访问超过200的IP方法1:根据访问日志(Nginx为例)#!/bin/bashDATE=$(date+%d/%b/%Y:%H:%M)ABNORMAL_IP=$(tail-n5000access.log|grep$DATE|awk'{a[$1]++}END{for(iina)if(a[i]>100)printi}')#先tail防止文件过大,读取慢,数字可......
  • 【Shell脚本】根据web访问日志,封禁请求量异常的IP,如IP在半小时后恢复正常,则解除封禁
    #!/bin/bash#####################################################################################根据web访问日志,封禁请求量异常的IP,如IP在半小时后恢复正常,则解除封禁####################################################################################lo......
  • 【Shell脚本】判断用户输入的是否为IP地址
    方法1:#!/bin/bashfunctioncheck_ip(){IP=$1VALID_CHECK=$(echo$IP|awk-F.'$1<=255&&$2<=255&&$3<=255&&$4<=255{print"yes"}')ifecho$IP|grep-E"^[0-9]{1,3}\.[0-9]{1,3}\......
  • 【Shell脚本】用户猜数字
    #!/bin/bash#脚本生成一个100以内的随机数,提示用户猜数字,根据用户的输入,提示用户猜对了,#猜小了或猜大了,直至用户猜对脚本结束。#RANDOM为系统自带的系统变量,值为0‐32767的随机数#使用取余算法将随机数变为1‐100的随机数num=$[RANDOM%100+1]echo"$n......
  • 【Shell脚本】批量修改文件名
    示例:#toucharticle_{1..3}.html#lsarticle_1.htmlarticle_2.htmlarticle_3.html把article改为bbs方法1:forfilein$(ls*html);domv$filebbs_${file#*_}#mv$file$(echo$file|sed-r's/.*(_.*)/bbs\1/')#mv$file$(ec......
  • 【Shell 脚本】检测两台服务器指定目录下的文件一致性
    #!/bin/bash######################################检测两台服务器指定目录下的文件一致性######################################通过对比两台服务器上文件的md5值,达到检测一致性的目的dir=/data/webb_ip=192.168.88.10#将指定目录下的文件全部遍历出来并......
  • 【Shell脚本】定时清空文件内容,定时记录文件大小
    #!/bin/bash#################################################################每小时执行一次脚本(任务计划),当时间为0点或12点时,将目标目录下的所有文件内#容清空,但不删除文件,其他时间则只统计各个文件的大小,一个文件一行,输出到以时#间和日期命名的文件中,需要考虑目标目录......