Bash Error Chain Construct
basOS G
noxelia at gmail.com
Sun Jun 22 13:25:06 EEST 2008
2008/6/20 Giorgos Keramidas <keramida at ceid.upatras.gr>:
> On Fri, 20 Jun 2008 14:20:57 +0300, Σπύρος Γεωργαράς <sng at hellug.gr>
> wrote:
> > O/H basOS G έγραψε:
> > | Εστω οτι ειμαστε μεσα σε ενα bash σκριπτ
> > | Εαν μια εντολη που *πρεπει* να εκτελεστει αποτύχει τι μπορούμε να
> κανουμε
> > |
> > | ΤΟ παρακατω δεν δουλευει γιατι οι παρενθέσεις ανοίγουν κάποιο subshell.
> > | must_exec || ( echo "Fatal Error" && exit 1)
> > |
> > | Το πατακατω δε δουλεύει γιατι γινεται evaluated ως (must_exec || echo
> > | "Error") && exit 1 οπότε παντα βγαίνει
> > | must_exec || echo "Fatal Error" && exit 1
> > |
> > | Καποια πρόταση εκτος απο το
> > | if ! must_exec ; then; echo "Fatal Error" ; exit 1 ;fi
> > | υπαρχει ? Μπορούμε να κανουμε κατι για να δουλεψει με τις παρενθέσεις ;
> >
> > Δοκίμασε αυτό
> >
> > must_exec || {
> > echo "Fatal Error"
> > exit 1
> > }
>
>
>
Thanks mans !
>
> Ακριβώς. Και μετά, όπως έγραψα και στο άλλο post, ξέχνα το εντελώς,
> πριν μπεις στον πειρασμό να γράφεις κώδικα με δομές όπως:
>
> cmd1 && {
> cmd2 || cmd3 || {
> cmd4 && {
> cmd5
> }
> }
> cmd6 || {
> cmd7 && cmd8 || {
> cmd9
> }
> }
> }
>
> Το ξέρω πως αυτό είναι `reductio ad absurdum'[1], και πιθανόν να μην
> έχει ούτε ο Βάσος, ούτε κανείς άλλος σκοπό να καταλήξει έτσι ο κώδικάς
> του.
Γιατι να μην καταλληξουμε σε ενα συνδυασμο ; Σαφως if ;then ;elseif; if ;
else ;if .... για κατι που εχει πανω απο δυο καταστασεις ή είναι μερος του
program logic. Αλλα στην περιπτωση μου λει το script :
--
mkdir /fooks
cp /tmp/skat /fooks/
---
εαν γραφαμε
--
mkdir /fooks || { echo "cannot create /fooks" && exit ;}
--
ειναι ενα πολυ απλο και χρήσιμο assert . Αλλο παραδειγμα στην php, perl
exoume to
---
kane_kati() or die("Den mporw");
--
Αυτη η συνταξη δινει εμφαση στην εντολη και στην "κανονικη" κατασταση και
οχι στην περιπτωση σφαλματος (αντι πχ):
---
if (kane_kati()) {
echo "den mporw";
exit();
}
---
Κατα τα αλλα συμφωνω οτι μπορει να κανει το script σου αδιαβαστο.
>
>
> [1] http://en.wikipedia.org/wiki/Reductio_ad_absurdum
>
> Το κόλπο με τις αγκύλες παίζει, αλλά η δική μου άποψη είναι ότι είναι
> καλύτερα να το αποφεύγει ο κόσμος. Ενθαρρύνει τον shell programmer να
> γράψει περίπλοκες, δυσνόητες δομές από shaghetti-logic, τις οποίες μετά
> από καμιά βδομάδα δε θα μπορεί να διαβάσει ΟΥΤΕ ο ίδιος.
>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.hellug.gr/pipermail/linux-greek-users/attachments/20080622/1be5a914/attachment.htm>
More information about the Linux-greek-users
mailing list