2017-06-11 17 views
0

Ich versuche, den folgenden Code in eine Schleife zu bekommen, wo es immer und immer wieder ausgeführt wird, während die ./rundate????????.sh um 1 TagShell Script Schleife

Zum Beispiel Erhöhung : Zunächst läuft es "rundate20170101.sh" Sekunde läuft "rundate20170102.sh" .. .. .. .. fünfzehnten Mal läuft "rundate20170115.sh"

der Versuch, die Schleife zu bekommen Ende nach 15 Tagen dann geht es zur nächsten Frage "willst du den Patch ausführen"

jede Hilfe würde sehr geschätzt werden.

Danke!

yn() { echo -n "$1: " 
     while read -sN1 x ; do 
      x=${x,} 
      case $x in [yn]) break ;; *) : ;; esac 
     done 
     echo $x 
     [ $x = y ] ; } 

yn "Do you want to install the new update? [Y/n]" || exit 
./install.sh 
echo "Pick a rundate file: " 
select x in ./rundate????????.sh ; do $x ; break ; done 
yn "Would you like to run the patch? [Y/n]" || exit 
./patch.sh 

Nur um zu verdeutlichen, ich versuche, dieses Skript von Anfang bis Ende zu starten. dann Schleife zurück zum Anfang, aber ändern Sie die .rundate2070101.sh zu rundate20170102.sh aber die anderen Fragen immer noch nach der ersten Schleife gefragt.

Wenn das besser in Perl geschrieben werden kann, würde ein Beispiel lieben!

+0

Holen Sie sich Ihr Skript überprüft auf [Shellcheck.net] (http://shellcheck.net) – codeforester

Antwort

0

können Sie mit regulärem Ausdruck in Schleife verwenden, zB:

select x in (\.\/rundate)[0-9]+\.sh ; do $x ; break ; done 

hoffen, es hilft.

+0

Vielen Dank für den Vorschlag. Ich habe versucht, das Skript in einer Schleife laufen zu lassen, aber erhöhen Sie die rudate {date} .sh um jedes Mal zu erhöhen, wenn es überläuft. – connollyc4