Προς το περιεχόμενο

bash shell script μετατροπή string σε int


toyotaki

Προτεινόμενες αναρτήσεις

Δημοσ.

Πώς μπορώ ένα string της μορφής "1,930,000,000" να το μετατρέψω σε αριθμό ώστε να μπορώ να κάνω πράξεις με αυτό το νούμερο σε bash shell script; Το "," δεν υποδηλώνει δεκαδικό.

 

Ευχαριστώ εκ των προτέρων.

Δημοσ.

Το bash δεν παρέχει διάφορα primitive types όπως μία τυπική γλώσσα προγραμματισμού. Όλες οι μεταβλητές είναι strings. Αυτό που θέλεις να κάνεις είναι να αφαιρέσεις τα κόμματα από το string της μεταβλητής σου, ώστε να έρθει σε «καθαρή» μορφή και να μπορείς να κάνεις με αυτό τις αριθμητικές πράξεις που υποστηρίζει το bash. Αυτό μπορεί να γίνει με την ενσωματωμένη δυνατότητα για substring replacement/deletion του bash. Ένα παράδειγμα:

 

>
parsifal@vmubuntu32:/tmp$ number=1,930,000,000
parsifal@vmubuntu32:/tmp$ echo $number
1,930,000,000
parsifal@vmubuntu32:/tmp$ let number+=1
parsifal@vmubuntu32:/tmp$ echo $number
1    # Ουπς! Όχι αυτό που περιμέναμε! Πιθανότατα, το bash αποτιμά ως 0 τη μεταβλητή, προσθέτει το 1 και γι' αυτό το λάθος αποτέλεσμα
parsifal@vmubuntu32:/tmp$ number=1,930,000,000    # Πάμε απ' την αρχή...
parsifal@vmubuntu32:/tmp$ number=${number//,}    # Διαγραφή όλων των εμφανίσεων του χαρακτήρα ',' από τη μεταβλητή
parsifal@vmubuntu32:/tmp$ echo $number
1930000000
parsifal@vmubuntu32:/tmp$ let number+=1
parsifal@vmubuntu32:/tmp$ echo $number
1930000001    # It works!

Δημοσ.

Δοκίμασα την απάντηση του parsifal και σε εμένα δουλεύει και μπορώ να κάνω τις πράξεις μου. Ευχαριστώ πολύ και για τις απαντήσεις σας.

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...