Πώς να χειριστείτε τα επιχειρήματα της γραμμής εντολών σε ένα σενάριο Bash

How Handle Command Line Arguments Bash Script



Σε πολλές περιπτώσεις, τα σενάρια bash απαιτούν τιμές ορίσματος για να παρέχουν επιλογές εισαγωγής στο σενάριο. Μπορείτε να χειριστείτε τα ορίσματα της γραμμής εντολών σε ένα σενάριο bash με δύο τρόπους. Το ένα είναι με τη χρήση μεταβλητές επιχειρημάτων και ένα άλλο είναι με τη χρήση παίρνει λειτουργία. Ο τρόπος με τον οποίο μπορείτε να χειριστείτε τα ορίσματα της γραμμής εντολών εμφανίζεται σε αυτό το σεμινάριο.

Χρήση μεταβλητών ορίσματος:

Η μεταβλητή επιχειρήματος ξεκινά από $ 0. Το όνομα του αρχείου κύριου σεναρίου αποθηκεύεται σε $ 0 το οποίο λαμβάνει τιμές ορίσματος από ορίσματα γραμμής εντολών. Εάν περάσουν δύο ορίσματα στη γραμμή εντολών, τότε οι τιμές του ορίσματος θα ληφθούν σε μεταβλητές $ 1 και $ 2 διαδοχικά.







Παράδειγμα -1: Αποστολή τριών αριθμητικών τιμών ως ορίσματα

Δημιουργήστε ένα αρχείο bash και προσθέστε τον ακόλουθο κώδικα. Το σενάριο θα λάβει τρεις τιμές ορίσματος και θα αποθηκευτεί σε $ 1, $ 2 και $ 3. Θα μετρήσει το συνολικό αριθμό των ορισμάτων, θα εκτυπώσει τιμές επιχειρημάτων με βρόχο και χωρίς βρόχο. Τέλος, εκτυπώστε το άθροισμα όλων των τιμών ορίσματος.



#!/bin/bash

# Καταμέτρηση συνολικού αριθμού επιχειρημάτων
πέταξε έξω 'Συνολικός αριθμός επιχειρημάτων: $#'

# Ανάγνωση τιμών ορίσματος μεμονωμένα
πέταξε έξω 'Τιμή πρώτου ορίσματος: $ 1'
πέταξε έξω 'Δεύτερη τιμή ορίσματος: 2 $'
πέταξε έξω 'Τρίτη τιμή ορίσματος: 3 $'

# Ανάγνωση τιμών ορίσματος χρησιμοποιώντας βρόχο
Γιαargvalσε '[email protected]'
κάνω
πέταξε έξω '$ argval'
Έγινε

# Προσθήκη τιμών ορίσματος
άθροισμα= $(($ 1+$ 2+3 $))

# εκτυπώστε το αποτέλεσμα
πέταξε έξω -Και ' nΑποτέλεσμα αθροίσματος =$ άθροισμα'

Εκτελέστε το αρχείο bash με τρεις τιμές αριθμητικού ορίσματος.



$κτυπώ δυνατάcmdline1.shπενήντα 35 δεκαπέντε





Παράδειγμα -2: Λήψη ονόματος αρχείου ως επιχείρημα

Δημιουργήστε ένα αρχείο bash και προσθέστε τον ακόλουθο κώδικα για να μετρήσετε τον συνολικό αριθμό χαρακτήρων οποιουδήποτε αρχείου. Εδώ, το όνομα αρχείου θα περάσει ως όρισμα γραμμής εντολών.

#!/bin/bash
όνομα αρχείου=$ 1
totalchar='τουαλέτα -ντο $ όνομα αρχείου'
πέταξε έξω 'Ο συνολικός αριθμός χαρακτήρων είναι$ totalchar'

Εκτελέστε το σενάριο bash με το όνομα αρχείου ως τιμή ενιαίου ορίσματος και εκτελέστε μια άλλη εντολή για να ελέγξετε τον συνολικό αριθμό χαρακτήρων αυτού του αρχείου. Εδώ, το αρχείο staff.txt χρησιμοποιείται ως τιμή ορίσματος. Ο συνολικός αριθμός χαρακτήρων του αρχείου staff.txt είναι 204.



$κτυπώ δυνατάcmdline2.sh staff.txt
$τουαλέτα -ντουπάλληλος.txt

Χρησιμοποιώντας τη λειτουργία getopts:

Αν θέλετε να αποθηκεύσετε δεδομένα στη βάση δεδομένων ή οποιοδήποτε αρχείο ή να δημιουργήσετε μια αναφορά σε συγκεκριμένη μορφή με βάση τα ορίσματα των τιμών της γραμμής εντολών, τότε παίρνει η λειτουργία είναι η καλύτερη επιλογή για την εκτέλεση της εργασίας. Είναι μια ενσωματωμένη λειτουργία linux. Έτσι, μπορείτε εύκολα να χρησιμοποιήσετε αυτήν τη λειτουργία στο σενάριό σας για να διαβάσετε μορφοποιημένα δεδομένα από τη γραμμή εντολών.

Παράδειγμα -1: Ανάγνωση ορισμάτων με συνάρτηση getopts

Δημιουργήστε ένα αρχείο bash και προσθέστε το ακόλουθο σενάριο για να κατανοήσετε τη χρήση του παίρνει λειτουργία. Η λειτουργία 'getopts' χρησιμοποιείται με το βρόχο while για την ανάγνωση των επιλογών και των τιμών του ορίσματος της γραμμής εντολών. Εδώ, χρησιμοποιούνται 4 επιλογές οι οποίες είναι ‘I’, ‘n’, ‘m’ και 'Και' Το Η δήλωση case χρησιμοποιείται για να ταιριάξει με τη συγκεκριμένη επιλογή και να αποθηκεύσει την τιμή του ορίσματος σε μια μεταβλητή. Τέλος, εκτυπώστε τις τιμές της μεταβλητής.

#!/bin/bash
ενώ παίρνει ':μέσα μου:'θυμωμένος;κάνω
υπόθεση $ arg σε
Εγώ) ταυτότητα=$ OPTARG;;
ν) Ονομα=$ OPTARG;;
Μ) Ημερομηνία κατασκευής=$ OPTARG;;
Και) Ημερομηνία λήξης=$ OPTARG;;
esac
Έγινε
πέταξε έξω -Και ' n$ ID $ Name $ Manufacturing_date $ Expire_date n'

Εκτελέστε το αρχείο με τις ακόλουθες επιλογές και τιμές ορίσματος. Εδώ, το p100 είναι η τιμή της -i επιλογής, 'Hot Cake' είναι η τιμή της -n, '01 -01-2018 ′ είναι η τιμή της -m επιλογής και το '06 -01-2018 ′ είναι η τιμή της - ε επιλογή.

$κτυπώ δυνατάcmdline3.sh-Εγώρ001 'Καυτό κεικ' '01 -01-2018 ' -Και '06 -01-2018 '

Όταν πρέπει να στείλετε απλές τιμές σε ένα σενάριο, τότε είναι καλύτερο να χρησιμοποιήσετε μεταβλητές ορίσματος. Αλλά εάν θέλετε να στείλετε δεδομένα με μορφοποιημένο τρόπο, τότε είναι καλύτερο να χρησιμοποιήσετε τη λειτουργία getopts για να ανακτήσετε τιμές ορίσματος. Για περισσότερες πληροφορίες δείτε το βίντεο !