[Solved]Κολλημα σε script στο unix

Είναι δωρεάν, είναι σταθερό, είναι γρήγορο.. ας το γνωρίσουμε και λίγο καλύτερα..

Συντονιστές: Super-Moderators, Software & Hardware Moderators

Απάντηση
fantomas
Δημοσιεύσεις: 38
Εγγραφή: 24 Απρ 2010 15:45

[Solved]Κολλημα σε script στο unix

Δημοσίευση από fantomas » 27 Μάιος 2012 17:36

Θελω να γραψω ένα shell script με όνομα adder που θα δέχεται απεριόριστο πλήθος ορισμάτων. Όλα τα ορίσματα πρέπει να εκφράζουν νούμερα. Αφου κάνω έλεγχο της ορθότητας των ορισμάτων, δηλαδή να έχω δωσει τουλάχιστον ένα όρισμα και όλα τα ορίσματα να είναι αριθμοί-ακέραιοι. Σε περίπτωση σφάλματος, προφανώς να εμφανίζω κατάλληλο μήνυμα λάθους. Το πρόγραμμά μου θελω να αθροίζει αυτά τα νούμερα και να εμφανίζει το αποτέλεσμα. Πραγματικα κολλαω λιγο στην συνταξη του script!!!! Οποια ιδεα δεκτη.Ευχαριστω 8)
Τελευταία επεξεργασία από το μέλος fantomas την 04 Ιουν 2012 11:27, έχει επεξεργασθεί 1 φορά συνολικά.


fantomas
Δημοσιεύσεις: 38
Εγγραφή: 24 Απρ 2010 15:45

[Solved]Κολλημα σε script στο unix

Δημοσίευση από fantomas » 30 Μάιος 2012 17:31

Ευχαριστω φιλε.Ξεκολλησα καπως.Αλλα τωρα μπερδευτηκα στο εξης: Πως θα ελεγξω οτι τα ορισματα που βαζω στο script ειναι ακεραιοι αριθμοι?


fantomas
Δημοσιεύσεις: 38
Εγγραφή: 24 Απρ 2010 15:45

[Solved]Κολλημα σε script στο unix

Δημοσίευση από fantomas » 01 Ιουν 2012 19:11

Ευχαριστω πολυ.Τελικα ελυσα το script.Η λυση μου ειναι η εξης:
#!/bin/bash
#adder
sum=0
if [ ! $# -ge 1 ]; then
echo "PREPEI NA DWSEIS TOULAXISTON ENA ORISMA!"
exit 1
fi
for i in $@; do
x=`echo $i | egrep "^[[:digit:]]+$"`
if [ "$x" = '' ]; then
echo "ERROR.TA ORISMATA PREPEI NA EINAI AKERAIOI ARITHMOI"
exit 1
fi
sum=`expr $sum + $i`
done
echo "TO ATHROISMA EINAI: $sum"

Ωστοσο αναρωτιεμαι αν υπαρχει και αλλος τροπος λυσης.Πειραματιζομαι αρκετα...αλλα ρωταω ετσι...για να αποκτησω καλυτερη προγραμματιστικη σκεψη.
8)

gvre
Δημοσιεύσεις: 990
Εγγραφή: 14 Οκτ 2010 11:34
Τοποθεσία: Ηράκλειο Κρήτης
Επικοινωνία:

[Solved]Κολλημα σε script στο unix

Δημοσίευση από gvre » 01 Ιουν 2012 22:32

Σχεδόν πάντα υπάρχει κάποιος άλλος τρόπος λύσης. Σου στέλνω τον δικό μου και μερικά χρήσιμα links για διάβασμα.

Όταν κάνεις exit είναι προτιμότερο να χρησιμοποιείς διαφορετικό exit status σε κάθε περίπτωση. Αυτό είναι χρήσιμο όταν χρειάζεται να ενεργήσεις διαφορετικά ανάλογα το σφάλμα.

Κώδικας: Επιλογή όλων

#!/bin/bash 
if [ $# -lt 1 ]; then
        echo "PREPEI NA DWSEIS TOULAXISTON ENA ORISMA!" 
        exit 1
fi

sum=0
for arg in $@; do
        if ! [[ $arg =~ ^[0-9]+$ ]]; then
                echo "ERROR.TA ORISMATA PREPEI NA EINAI AKERAIOI ARITHMOI" 
                exit 2
        fi
        sum=$(($sum+$arg))
done

echo "TO ATHROISMA EINAI: $sum"
http://wiki.bash-hackers.org/syntax/arith_expr
http://wiki.bash-hackers.org/syntax/expansion/arith
http://wiki.bash-hackers.org/commands/builtin/let
http://www.gnu.org/software/bash/manual ... -Expansion

Άβαταρ μέλους
Hermeia
Honorary Member
Δημοσιεύσεις: 987
Εγγραφή: 02 Αύγ 2004 00:14
Τοποθεσία: Αθήνα
Επικοινωνία:

[Solved]Κολλημα σε script στο unix

Δημοσίευση από Hermeia » 05 Ιούλ 2012 14:07

Εξαιρετικό!
απλό, καθαρότατο & συντομότατο - όπως είναι τα ιδανικά σκριπτάκια

κι ευχαριστούμε για τους συνδέσμους!!

[μελετάω bash scripting, μου έταξα να αυτοματοποιήσω όλες τις τυπικές εργασίες μου..]

:-)

gvre
Δημοσιεύσεις: 990
Εγγραφή: 14 Οκτ 2010 11:34
Τοποθεσία: Ηράκλειο Κρήτης
Επικοινωνία:

[Solved]Κολλημα σε script στο unix

Δημοσίευση από gvre » 05 Ιούλ 2012 14:31

Με scripting, καθώς επίσης και με εντολές όπως grep, awk, cut, sed, find, head, tail κ.ά., μπορείς να κάνεις πολλά πράγματα. Δε γράφω συχνά scripts, αλλά τις παραπάνω εντολές τις χρησιμοποιώ αρκετά συχνά. Για βοήθεια υπάρχει πάντα το Advanced Bash-Scripting Guide :)

Απάντηση

Επιστροφή στο “Linux Guide”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες