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