【问题标题】:Shell script doesn't do anything when executedShell 脚本在执行时不执行任何操作
【发布时间】:2012-09-20 11:54:21
【问题描述】:

我是 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

【问题讨论】:

    标签: linux bash shell unix aix


    【解决方案1】:
    for ((i=0;i > counter; i++))
    

    这永远不会循环。 i&lt;counter 有更好的机会。另一个 for 循环也一样。

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

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

    【讨论】:

    • 哦,我明白了...好的,现在感谢您。但是,它没有向我发送任何电子邮件,你知道为什么吗?
    • 很难说,那里有很多代码。你应该一块一块地测试它。 mail - s subject 不过看起来很奇怪。在单独的s 之前有一个空格太多或缺少-
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-25
    相关资源
    最近更新 更多