2016-12-15 222 views
1

編寫了一個Bash腳本來創建兩個文件,每個文件都有一個日期列表,以便以後使用。該腳本需要三個參數:數據主題,最短日期和最大日期。這裏是我的腳本:Bash腳本不創建文件

#!/bin/sh 
     dataSubj=$1 
     minDate=$2 
     maxDate=$3 

     echo -e "my variables:\nsubject:\t$dataSubj\nstart:\t$minDate\nend:\t$maxDate" 
     //Wrote the above line for debugging 

     configDir=/opt/site1/ETL/MFGEDW/config/MERS2 
     dateCount=1 
     addTime=00:00:00 
     fromDates=$dataSubj_fromDates.txt 
     toDates=$dataSubj_toDates.txt 

     cd $configDir 

     echo "Creating fromDates file and adding $minDate" 
     echo -e "$minDate $addTime" > ./$fromDates 

     echo "Creating toDates file" 
     >./$toDates 

     while [[ $minDate < $maxDate ]] 
      do 
       minDate=$(date -d "$minDate 7 days" +%Y-%m-%d) 
       ((dateCount++)) 
       if [[ $minDate < $maxDate ]]; then 
        echo "Adding $minDate to fromDates file" 
        echo -e "$minDate $addTime," >> ./$fromDates 
       fi 

       echo "Adding $minDate to toDates file"  
       echo -e "$minDate $addTime," >> ./$toDates 

       echo "$dateCount dates total" 
     done 

     exit $dateCount 

我的問題是,不是有兩個文件與所需的日期,我對此應該已經寫在這兩個文件中的所有日期一個隱藏的文件。我對腳本編程相當陌生,但在我使用過的其他腳本和知道工作之後對其進行了建模。是否有我丟失或不必要的添加?提前致謝。

+0

文件的名稱是什麼?給你的腳本提供這些和參數。 – kabanus

+0

@kabanus隱藏文件的名稱是.txt,參數是:mySubject,2016-10-10,2016-12-10 – user3517375

回答

3

這是你的問題:

fromDates=$dataSubj_fromDates.txt 
toDates=$dataSubj_toDates.txt 

擊不知道你的意思dataSubj是變量的名稱。你試圖使用兩個不同的變量:

dataSubj_fromDates 
dataSubj_toDates 

很確定那些不存在。注意 '。'是變量命名的制止者。嘗試使用:

fromDates=${dataSubj}_fromDates.txt 
toDates=${dataSubj}_toDates.txt 

下一次打印所有變量調試時。

+0

這樣做。當我需要使用{}時,您是否有良好的來源供我閱讀?我用過其他人寫的腳本,他們用echo -e「whatever」> ./$variableName.txt創建文件。他們是ksh腳本,不知道這是否有所作爲。 – user3517375

+0

這不是一個很大的「法律」,所以我不認爲有這方面的重點。基本上,如果你的變量是字符串的一部分,那麼你需要它 - 所有腳本語言都是如此。否則,解釋器認爲變量的名稱是整個字符串。 – kabanus

+0

很高興知道,感謝您的幫助。 – user3517375