Αρχική σελίδα » πως να » Ποια είναι η διαφορά μεταξύ ενιαίας και διπλής προσφοράς στο Bash Shell;

    Ποια είναι η διαφορά μεταξύ ενιαίας και διπλής προσφοράς στο Bash Shell;

    Κλείσιμο κειμένου σε εισαγωγικά είναι αρκετά συνηθισμένη πρακτική στη γραμμή εντολών, ειδικά όταν πρόκειται για αρχεία που έχουν κενά στα ονόματα, αλλά πώς ξέρετε αν θα χρησιμοποιήσετε απλά ή διπλά εισαγωγικά; Ας ρίξουμε μια ματιά στη διαφορά, και όταν πρέπει να χρησιμοποιήσετε ένα εναντίον του άλλου.

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

    Αποσπάσματα με απλό κείμενο

    Αν απλώς περνάτε μερικά κείμενα λέξεων, δεν έχει σημασία τι θα χρησιμοποιήσετε, καθώς και οι δύο θα δουλέψουν ακριβώς το ίδιο. Για παράδειγμα, αυτές οι δύο εντολές θα δημιουργήσουν και έναν κατάλογο με τίτλο Test Directory:

    mkdir "Κατάλογος δοκιμών"
    mkdir 'Test Directory'

    Πιο έμπειροι τύποι πιθανώς θα σημειώσουν ότι θα μπορούσατε επίσης να χρησιμοποιήσετε το mkdir Test \ Directory αν θέλετε.

    Shell Μεταβλητή Επέκταση

    Η διαφορά μεταξύ μονής και διπλής προσφοράς γίνεται πιο σημαντική όταν ασχολείστε με μεταβλητές στη γραμμή εντολών - από προεπιλογή, bash πρόκειται να επεκτείνει μια μεταβλητή όπως $ test στην πλήρη συμβολοσειρά. Κατ 'αρχάς, θα εκχωρήσουμε τη μεταβλητή:

    test = "Αυτή είναι μια δοκιμή"

    Τώρα μπορείτε να χρησιμοποιήσετε αυτή τη μεταβλητή στη γραμμή εντολών, όπως αυτή, η οποία θα έπρεπε απλά να εξάγει Αυτό είναι ένα τεστ στην κονσόλα:

    echo $ test

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

    echo '$ test'

    Δεν θα δείτε τίποτα εκτός από τη δοκιμή '$ test' στη γραμμή εντολών όταν χρησιμοποιείτε μοναδικά εισαγωγικά, αλλά θα εξάγεται σωστά όταν χρησιμοποιείτε διπλά εισαγωγικά:

    Το ίδιο πράγμα λειτουργεί όταν χρησιμοποιείτε το χαρακτήρα για να αναπτύξετε μια εντολή στη γραμμή εντολών. Για παράδειγμα, λέτε ότι θέλετε να χρησιμοποιήσετε το pwd εντολή μέσα από μια άλλη εντολή-χρησιμοποιείτε backticks για να πείτε στο κέλυφος να το επεκτείνει:

    echo 'pwd' / test

    Αν βρεθήκατε στο φάκελο του σπιτιού σας, θα δείτε μια έξοδο που έμοιαζε με αυτό:

    / home / geek / δοκιμή

    Πείτε, για παράδειγμα, ότι βρίσκεστε σε ένα φάκελο που έχει ένα χώρο στη διαδρομή και θέλετε να χρησιμοποιήσετε την εντολή ln για να δημιουργήσετε μια συμβολική σύνδεση με ένα αρχείο στον τρέχοντα κατάλογο. Συνήθως πρέπει να καθορίσετε την πλήρη διαδρομή όταν χρησιμοποιείτε την εντολή ln, οπότε είναι πολύ πιο εύκολο να χρησιμοποιήσετε το 'pwd' για να αποθηκεύσετε την πληκτρολόγηση.

    Δείτε τι συμβαίνει όταν προσπαθείτε να χρησιμοποιήσετε την εντολή χωρίς να συμπεριλάβετε σε εισαγωγικά:

    ln -s 'pwd' / test / home / geek / linkedname

    Αντ 'αυτού, θα πρέπει να περιβάλλετε σε εισαγωγικά:

    ln -s "" pwd "/ όνομααρχείου" / some / other / path

    Για ένα πιο συγκεκριμένο παράδειγμα, ας υποθέσουμε ότι έχουμε μια δομή φακέλου όπως αυτό το παράδειγμα, όπου όλα τα ονόματα αρχείων έχουν κενά σε αυτά:

    Επειδή η εντολή unzip δεν υποστηρίζει τη χρήση * για να την εκτελέσετε ενάντια σε όλα τα αρχεία, θα πρέπει να χρησιμοποιήσετε αντ 'αυτού την εντολή for. Εδώ είναι όπου τα πράγματα γίνονται ενδιαφέροντα:

    για το f στο * .zip; αποσυμπιέστε το $ f;

    Ωχ! Φαίνεται ότι δεν λειτούργησε.

    Αυτό που πρέπει να κάνουμε αντ 'αυτού είναι να χρησιμοποιήσετε διπλά εισαγωγικά γύρω από τη μεταβλητή $ f, όπως παρακάτω:

    για το f στο * .zip; αποσυμπιέστε το "$ f";

    Τώρα κάθε φορά που η εντολή διέρχεται από το βρόχο, θα τρέξει πραγματικά μια εντολή όπως αυτή:

    αποσυμπιέστε "test 1.zip"

    Φυσικά θα περνούσε και θα τρέξει μια παρόμοια εντολή για κάθε αρχείο στον κατάλογο.

    Ας αξιολογήσουμε

    Τώρα που έχουμε περάσει από τα παραδείγματα, θα αναθεωρήσουμε γρήγορα γρήγορα σε περίπτωση που το χάσατε:

    Διπλά αποσπάσματα

    • Χρησιμοποιήστε όταν θέλετε να περικλείσετε μεταβλητές ή να χρησιμοποιήσετε επέκταση κελύφους μέσα σε μια συμβολοσειρά.
    • Όλοι οι χαρακτήρες μέσα ερμηνεύονται ως κανονικοί χαρακτήρες εκτός από το $ ή 'το οποίο θα επεκταθεί στο κέλυφος.

    Μοναδικές προσφορές

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

    Έτσι τελειώνει το μάθημα των εισαγωγικών. Χρησιμοποιήστε τα με σύνεση.