2014-05-12 104 views
0

使用以下腳本,我成功地用於檢查爲特定日期和特定目的地上的每個應用程序創建的.zip file以確認我的備份是否成功。將兩個值分配給一個變量

到現在爲止我只用於檢查備份時間_2230,但現在我也想在此檢查中包含_2250

所以我所做的只是改變了:BACKUPTIME="_2230 _2250",但它似乎並沒有工作,因爲我既沒有在Log中獲得SUCCESSFUL也沒有FAILED狀態。

  1. 你能指點我嗎我的腳本中的問題在哪裏?
  2. 它可能對腳本的速度有任何影響,我的意思是增加更多 TIME(_2230和現在_2250)來測試Backup?

    #!/bin/sh 
    
    DATE=`date +%Y%m%d -d "1 days ago"` 
    DESTINATION="/Network/Storage/Backup" 
    LOG="/Network/Storage/Backup" 
    BACKUPTIME="_2230" 
    
    APPLICATION="DATADEV TESTREV PRETEST" 
    
    for C in $APPLICATION 
    do 
    
    cd $DESTINATION/$C/ 
    
    test -f $C$DATE$BACKUPTIME.zip 
    
    if [ $? -eq 0 ] 
    then 
    echo "Backup SUCCESSFUL" >>$LOG/output.txt 
    
    else 
    echo "Backup FAILED" >>$LOG/output.txt 
    
    fi 
    
    done 
    

回答

3

使用數組:

#!/bin/sh 

    DATE=`date +%Y%m%d -d "1 days ago"` 
    DESTINATION="/Network/Storage/Backup" 
    LOG="/Network/Storage/Backup" 
    BACKUPTIMES=(_2230 _2250)     #Declare an array 

    APPLICATION="DATADEV TESTREV PRETEST" 

    for C in $APPLICATION 
    do 
     cd $DESTINATION/$C/ 
     success=false 
     for BACKUPTIME in ${BACKUPTIMES[@]}; do #Iterate over the array 
      test -f $C$DATE$BACKUPTIME.zip && success=true 
     done 
     if $success 
     then 
      echo "Backup SUCCESSFUL" >>$LOG/output.txt 
     else 
      echo "Backup FAILED" >>$LOG/output.txt 
     fi 
    done 

注:我已經做了儘可能少的改動你的代碼,更容易理解。還有優化的空間。

+0

它在Log中給出6條消息,而我只有3個應用程序需要檢查。它看起來像是在兩次檢查每個應用程序(_2230 _2250),但是儘管打印了單個SUCCESS/FAILURE,但其每次打印2個結果的次數都是兩次。但不幸的是,這種情況並非如此,因爲2230或2250的備份無論在哪個時間都是單一應用程序的備份,因此每個應用程序只需要一條消息。 – Sunny

+0

嘗試編輯... – anishsane

1

這可能做

dya=$(date +%y%m%d -d '1 days ago') 
for fdr in datadev testrev pretest 
do 
    cd /network/storage/backup/$fdr 
    pas=1 
    for chk in ${fdr}${dya}_{2230,2250} 
    do 
    [ -f "$chk" ] || pas=0 
    done 
    (
    printf 'backup ' 
    ((pas)) && echo successful || echo failed 
) >> /network/storage/backup/output.txt 
done 
+0

它在Log中提供6條消息,而我只有3個應用程序進行檢查。它看起來像是在兩次檢查每個應用程序(_2230 _2250),但是儘管打印了單個SUCCESS/FAILURE,但其每次打印2個結果的次數都是兩次。但不幸的是,這種情況並非如此,因爲2230或2250的備份無論在哪個時間都是單一應用程序的備份,因此每個應用程序只需要一條消息。 – Sunny

相關問題