2012-09-28 171 views
0

我真的很陌生,在shell腳本中,我不確定我的代碼有什麼問題。基本上,我的代碼讀取電子郵件地址,目錄位置的文本文件並將其保存在數組中。 如果文件系統超出磁盤使用量,它將發出通知郵件並將日誌文件移動到備份文件夾。但它沒有做任何事情,有人能告訴我爲什麼它不起作用嗎? 在此先感謝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 

回答

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

這是永遠不會循環。 i<counter有更好的機會。另一個for循環也一樣。

除此之外,循環內的測試需要空格。

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

哦,我明白了......好吧,它現在可以工作一些,現在感謝你。但是,它不會發送任何電子郵件給我,你知道爲什麼嗎? – user1516649

+0

很難說,這裏有很多代碼。你應該一塊一塊地測試它。郵件主題看起來很奇怪。在單獨的's'之前有一個空間太多或缺少'-'。 – Mat

+0

好的,我會很感謝你! – user1516649