<br><br><div class="gmail_quote">2008/6/20 Giorgos Keramidas <<a href="mailto:keramida@ceid.upatras.gr">keramida@ceid.upatras.gr</a>>:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div class="Ih2E3d">On Fri, 20 Jun 2008 14:20:57 +0300, Σπύρος Γεωργαράς <<a href="mailto:sng@hellug.gr">sng@hellug.gr</a>> wrote:<br>
> O/H basOS G έγραψε:<br>
> | Εστω οτι ειμαστε μεσα σε ενα bash σκριπτ<br>
> | Εαν μια εντολη που *πρεπει* να εκτελεστει αποτύχει τι μπορούμε να κανουμε<br>
> |<br>
> | ΤΟ παρακατω δεν δουλευει γιατι οι παρενθέσεις ανοίγουν κάποιο subshell.<br>
> | must_exec || ( echo "Fatal Error" && exit 1)<br>
> |<br>
> | Το πατακατω δε δουλεύει γιατι γινεται evaluated ως (must_exec || echo<br>
> | "Error") && exit 1 οπότε παντα βγαίνει<br>
> | must_exec || echo "Fatal Error" && exit 1<br>
> |<br>
> | Καποια πρόταση εκτος απο το<br>
> | if ! must_exec ; then; echo "Fatal Error" ; exit 1 ;fi<br>
> | υπαρχει ? Μπορούμε να κανουμε κατι για να δουλεψει με τις παρενθέσεις ;<br>
><br>
</div><div>> Δοκίμασε αυτό<br>
><br>
> must_exec || {<br>
> echo "Fatal Error"<br>
> exit 1<br>
> }</div></blockquote><div> </div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div> </div></blockquote><div>Thanks mans ! <br></div>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div class="Ih2E3d"><br>
</div>Ακριβώς. Και μετά, όπως έγραψα και στο άλλο post, ξέχνα το εντελώς,<br>
πριν μπεις στον πειρασμό να γράφεις κώδικα με δομές όπως:<br>
<br>
cmd1 && {<br>
cmd2 || cmd3 || {<br>
cmd4 && {<br>
cmd5<br>
}<br>
}<br>
cmd6 || {<br>
cmd7 && cmd8 || {<br>
cmd9<br>
}<br>
}<br>
}<br>
<br>
Το ξέρω πως αυτό είναι `reductio ad absurdum'[1], και πιθανόν να μην<br>
έχει ούτε ο Βάσος, ούτε κανείς άλλος σκοπό να καταλήξει έτσι ο κώδικάς<br>
του. </blockquote><div><br> Γιατι να μην καταλληξουμε σε ενα συνδυασμο ; Σαφως if ;then ;elseif; if ; else ;if .... για κατι που εχει πανω απο δυο καταστασεις ή είναι μερος του program logic. Αλλα στην περιπτωση μου λει το script : <br>
--<br>mkdir /fooks<br>cp /tmp/skat /fooks/<br>---<br>εαν γραφαμε<br>--<br> mkdir /fooks || { echo "cannot create /fooks" && exit ;}<br>--<br>ειναι ενα πολυ απλο και χρήσιμο assert . Αλλο παραδειγμα στην php, perl exoume to <br>
---<br>kane_kati() or die("Den mporw");<br>--<br>Αυτη η συνταξη δινει εμφαση στην εντολη και στην "κανονικη" κατασταση και οχι στην περιπτωση σφαλματος (αντι πχ):<br>---<br>if (kane_kati()) {<br> echo "den mporw";<br>
exit();<br>} <br>---<br><br>Κατα τα αλλα συμφωνω οτι μπορει να κανει το script σου αδιαβαστο.<br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<br>
<br>
[1] <a href="http://en.wikipedia.org/wiki/Reductio_ad_absurdum" target="_blank">http://en.wikipedia.org/wiki/Reductio_ad_absurdum</a><br>
<br>
Το κόλπο με τις αγκύλες παίζει, αλλά η δική μου άποψη είναι ότι είναι<br>
καλύτερα να το αποφεύγει ο κόσμος. Ενθαρρύνει τον shell programmer να<br>
γράψει περίπλοκες, δυσνόητες δομές από shaghetti-logic, τις οποίες μετά<br>
από καμιά βδομάδα δε θα μπορεί να διαβάσει ΟΥΤΕ ο ίδιος.<br>
<br><br>
<br>
</blockquote></div><br>