2016-07-06 12 views
0

Guten Morgen,Bash-Skript zum Ausführen über einen Bereich von Daten

Ich habe eine brennende Frage in Bezug auf eine bestimmte Bash-Skript, das ich versuche zu laufen. Dieses Skript lädt eine Datei herunter und speichert sie dann in einem anderen Ordner. Das Skript wird nicht laufen auf einem Cron jeden Tag, und ich war neugierig, ob es eine Möglichkeit gibt, es so zu schreiben, wenn ich 10 Tage sagen vermisse, wird es wissen, eine Textdatei aus dem Verzeichnis zu downloaden, das mit jedem spezifischen entspricht Tag, den ich verpasst habe. Ich speichere gerade eine Textdatei der letzten aktuellen Laufzeit. Hier ist ein Beispiel von dem, was ich bisher habe!

#!/bin/bash 

    YMDa=$(date +%Y%m%d) 
    echo "${runtime}" 

    echo "${YMDa}" 


    wget --username --password http://somewebsite.com 

     mv nbcufs_master_10day_tmaxs master_10day_tmaxs_${YMDa} 
     mv master_10day_tmaxs_${YMDa} 'C:\Users\Wiggles\Documents\Microsoft Excel\SubDirectory1\SubDirectory2\SubDirectory3' 

    echo "${YMDa}" > latest_runtime 


exit 0 

Antwort

-1

Sie möchten können Sie unter diesem Link sehen: Bash: Looping through dates

Da Sie erwähnen „ein paar Tage, fehlt“, der Name sammeln konnte/Zeitstempel/ect der letzten datierten Datei, die Sie abgerufen haben Als "Startdatum" festlegen und dann einen Cursor ab diesem Datum über die Antworten auf den obigen Link implementieren. Ich denke, dass die Antwort von Wintermute Ihnen helfen sollte, dahin zu kommen, wo Sie brauchen.

ich mit cpburnz zustimmen ... geben diesem Snippet einen Wirbel (input_start würde Ihre letzte Tag sein, lief)

#!/bin/bash 
input_start=20160101 
input_end=$(date +%Y%m%d) 

startdate=$(date -d "$input_start" +%Y%m%d) || exit -1 
enddate=$(date -d "$input_end" +%Y%m%d) || exit -1 

d="$startdate" 
while [ "$d" != "$enddate" ]; do 
    directory="`pwd`/folder/$d" 

    if [ -d $directory ]; then 
    echo "No action for $d." 
    else 
    echo "Files not found for date $d" 
    mkdir $directory 
    # Do more actions... 
    fi 

    d=$(date -d "$d + 1 day" +%Y%m%d) 
done 
+0

Einverstanden, aktualisiert Post entsprechend. Meh, erster Versuch auf Stackexchange nach langer Zeit lauern. – Jeremy

+0

Vielen Dank alle, Ill Beitrag wieder wenn ich weiterhin eine Straßensperre trete, aber dieses Material sieht aus wie es mir helfen wird über die Hürde! –