View previous topic :: View next topic |
Author |
Message |
3PO Veteran
Joined: 26 Nov 2006 Posts: 1110 Location: Schwabenländle
|
Posted: Sat Oct 20, 2007 12:00 pm Post subject: Bräuchte mal wieder Hilfe bei einen Shellscript |
|
|
Hallo Zusammen,
ich habe da mal wieder ein Problem mit einen Shellscript.
ich habe mit ein kleines Script gebastelt, das ein Programm installiert.
In diesem Script gibt es einen Aufruf, der eine Datei patchen soll:
Code: | patch -p1 < abc.diff |
So weit, so gut. - Jetzt die Frage:
Gibt es irgendwie eine Möglichkeit abzufragen, ob der Patch schon ausgeführt wurde, oder nicht? |
|
Back to top |
|
|
sirro Veteran
Joined: 20 Jul 2003 Posts: 1472 Location: aachen.nrw.de.eu
|
Posted: Sat Oct 20, 2007 12:11 pm Post subject: |
|
|
Bei mir gibt
Code: | patch -f --dry-run -p1 < ../patch |
einen returncode von 1 wenn der Patch schon angewendet wurde. Wenn nicht, dann normal 0.
(Danach muss man nochmal ohne --dry-run ausführen um wirklich zu patchen.) |
|
Back to top |
|
|
3PO Veteran
Joined: 26 Nov 2006 Posts: 1110 Location: Schwabenländle
|
Posted: Sat Oct 20, 2007 12:21 pm Post subject: |
|
|
@ sirro,
Danke erstmal für die schnelle Antwort, doch leider bin ich (noch) nicht so ganz fit in der Shellscript Programmierung.
Wie kann ich denn das ganze in eine IF,THEN.ELSE Schleife einbinden? |
|
Back to top |
|
|
sirro Veteran
Joined: 20 Jul 2003 Posts: 1472 Location: aachen.nrw.de.eu
|
Posted: Sat Oct 20, 2007 12:42 pm Post subject: |
|
|
wenn ich ein wenig klugscheissen darf: if/then/else ist keine schleife. Sie wiederholen ja auch nichts. Aber mach dir nichts draus, das habe ich schon oft so gehoert.
Den Returncode kannst du direkt in einem if-abfangen.
Code: | if patch -f --dry-run -p1 < ../patch; then echo xxx; else echo yyy; fi |
Das sollte bei 0 in die then-Verzweigung gehen und bei allem anderen in die else-Verzweigung.
Fallst du ihn noch brauchst kannst du ihn aus $? auslesen und weiterverarbeiten
Code: | patch -f --dry-run -p1
echo $? |
|
|
Back to top |
|
|
3PO Veteran
Joined: 26 Nov 2006 Posts: 1110 Location: Schwabenländle
|
Posted: Sat Oct 20, 2007 1:43 pm Post subject: |
|
|
hmm, irgendwie komme ich da immer noch nicht weiter... |
|
Back to top |
|
|
3PO Veteran
Joined: 26 Nov 2006 Posts: 1110 Location: Schwabenländle
|
Posted: Sun Oct 21, 2007 2:50 pm Post subject: |
|
|
So, habe es doch noch geschaft.
Hier meine Lösung:
Code: |
if [ "$(patch -f --dry-run < abc.diff | grep FAILED)" = "" ] ; then
patch -f < abc.diff
fi
|
Danke nochmal @ sirro, für den "Stupps" in die richtige Richtung |
|
Back to top |
|
|
Necoro Veteran
Joined: 18 Dec 2005 Posts: 1912 Location: Germany
|
Posted: Mon Oct 22, 2007 7:17 am Post subject: |
|
|
3PO wrote: | So, habe es doch noch geschaft.
Hier meine Lösung:
Code: |
if [ "$(patch -f --dry-run < abc.diff | grep FAILED)" = "" ] ; then
patch -f < abc.diff
fi
|
Danke nochmal @ sirro, für den "Stupps" in die richtige Richtung |
Warum nicht:
Code: | if patch -f --dry-run < abc.diff ; then
patch -f < abc.diff
fi | ? _________________ Inter Deum Et Diabolum Semper Musica Est. |
|
Back to top |
|
|
toralf Developer
Joined: 01 Feb 2004 Posts: 3940 Location: Hamburg
|
Posted: Mon Oct 22, 2007 8:49 am Post subject: |
|
|
What's about using this patch option ) Code: | -N or --forward
Ignore patches that seem to be reversed or already applied. See also -R.
|
|
|
Back to top |
|
|
sirro Veteran
Joined: 20 Jul 2003 Posts: 1472 Location: aachen.nrw.de.eu
|
Posted: Mon Oct 22, 2007 3:57 pm Post subject: |
|
|
Hm, ich meine die hätte ich probiert und festgestellt, dass die Returnwerte in beiden Fällen gleich wären. Ist aber doch nicht so. Dann habe ich mich sicher vom Output ablenken lassen.
Also --forward --dry-run sollte dann noch besser sein. |
|
Back to top |
|
|
Necoro Veteran
Joined: 18 Dec 2005 Posts: 1912 Location: Germany
|
Posted: Mon Oct 22, 2007 4:15 pm Post subject: |
|
|
sirro wrote: | Also --forward --dry-run sollte dann noch besser sein. |
Naja ... das --dry-run kann man denn ja komplett weglassen, oder? Weil das "--forward" macht ja alles, was das if machen sollte _________________ Inter Deum Et Diabolum Semper Musica Est. |
|
Back to top |
|
|
|