gpt4 book ai didi

linux - Shell脚本在执行时不做任何事情

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:00:36 24 4
gpt4 key购买 nike

我真的是 shell 脚本的新手,我不确定我的代码有什么问题。基本上,我的代码读取电子邮件地址、目录位置的文本文件并将其保存在数组中。如果文件系统超过磁盘使用率,它会发出通知电子邮件并将日志文件移动到备份文件夹。但它没有做任何事情,有人可以告诉我为什么它不起作用吗?提前致谢

#!/bin/sh
counter=0
logloc=/home/temp/ServerLogs
backup=/home/work/test
## Reads the location of the file systems that needs to be investigated from location.txt
## and save it into an array
while read -r line; do
Unix_Array[${counter}]=$line;
let counter=counter+1;
done < location.txt
## Reads Email recipients and save it into an array
num=0
while read -r line; do
Email_list[${num}]=$line;
let num=num+1;
done < email.txt
## Checking one file system per loop
for ((i=0;i > counter; i++))
do
deletestatus=false;
## usage returns how much the file system is full. Ex. 50% => 50
usage=$(df -P ${Unix_Array[$i]} | grep ${Unix_Array[$i]} | awk '{ print $5}' | sed 's/%//g')
#if usage is greater than 80%, send email
if [$usage -gt 80];
then
for ((j=0;j > num; j++))
do
echo ${Unix_Array[$i]} " is " $usage "% full, the logs that are 7 days older has been removed" | mail - s "Log notification" ${Email_list[$j]}
done
deletestatus=true;
elif [$usage -gt 50];
then
## if free space is greater 50 and less than 80, it will not send email
deletestatus=true;
else
## Safety net
deletestatus=false;
fi
if [$deletestatus];
then
##Moving Files that are older than 7 days
$(find /home/songja/ServerLogs -type f -name 'SystemOut_*' -mtime +2 -exec mv {} /home/songja/test \;)
## Deleting files that are older than 7 days
$(find . $logloc . - name 'SystemOut_*' -mtime +2 -delete)
fi
done

最佳答案

for ((i=0;i > counter; i++))

那永远不会循环。 i<counter有更好的机会。另一个也一样for循环。

除此之外,循环内的测试需要空格。

if [ $foo -gt 42 ] ; 
# ^ important

关于linux - Shell脚本在执行时不做任何事情,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12642677/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com