Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
Bräuchte mal wieder Hilfe bei einen Shellscript
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

 
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German) Diskussionsforum
View previous topic :: View next topic  
Author Message
3PO
Veteran
Veteran


Joined: 26 Nov 2006
Posts: 1110
Location: Schwabenländle

PostPosted: Sat Oct 20, 2007 12:00 pm    Post subject: Bräuchte mal wieder Hilfe bei einen Shellscript Reply with quote

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
View user's profile Send private message
sirro
Veteran
Veteran


Joined: 20 Jul 2003
Posts: 1472
Location: aachen.nrw.de.eu

PostPosted: Sat Oct 20, 2007 12:11 pm    Post subject: Reply with quote

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
View user's profile Send private message
3PO
Veteran
Veteran


Joined: 26 Nov 2006
Posts: 1110
Location: Schwabenländle

PostPosted: Sat Oct 20, 2007 12:21 pm    Post subject: Reply with quote

@ 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
View user's profile Send private message
sirro
Veteran
Veteran


Joined: 20 Jul 2003
Posts: 1472
Location: aachen.nrw.de.eu

PostPosted: Sat Oct 20, 2007 12:42 pm    Post subject: Reply with quote

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
View user's profile Send private message
3PO
Veteran
Veteran


Joined: 26 Nov 2006
Posts: 1110
Location: Schwabenländle

PostPosted: Sat Oct 20, 2007 1:43 pm    Post subject: Reply with quote

hmm, irgendwie komme ich da immer noch nicht weiter...
Back to top
View user's profile Send private message
3PO
Veteran
Veteran


Joined: 26 Nov 2006
Posts: 1110
Location: Schwabenländle

PostPosted: Sun Oct 21, 2007 2:50 pm    Post subject: Reply with quote

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 :wink:
Back to top
View user's profile Send private message
Necoro
Veteran
Veteran


Joined: 18 Dec 2005
Posts: 1912
Location: Germany

PostPosted: Mon Oct 22, 2007 7:17 am    Post subject: Reply with quote

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 :wink:

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
View user's profile Send private message
toralf
Developer
Developer


Joined: 01 Feb 2004
Posts: 3940
Location: Hamburg

PostPosted: Mon Oct 22, 2007 8:49 am    Post subject: Reply with quote

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
View user's profile Send private message
sirro
Veteran
Veteran


Joined: 20 Jul 2003
Posts: 1472
Location: aachen.nrw.de.eu

PostPosted: Mon Oct 22, 2007 3:57 pm    Post subject: Reply with quote

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
View user's profile Send private message
Necoro
Veteran
Veteran


Joined: 18 Dec 2005
Posts: 1912
Location: Germany

PostPosted: Mon Oct 22, 2007 4:15 pm    Post subject: Reply with quote

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
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German) Diskussionsforum All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum