bash single quote vs double εισαγωγικά


Απάντηση 1:

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

[erbo @ delenn ~] $ var = άλφα[erbo @ delenn ~] $ echo "$ var beta"άλφα beta[erbo @ delenn ~] $ echo "$ var beta"$ var beta

Η συμβολοσειρά μίας παραπομπής δεν αντικατέστησε το "$ var" με την τιμή του "var", ενώ η συμβολοσειρά διπλής αναφοράς.

Ακολουθεί ένα πιο περίπλοκο παράδειγμα:

[erbo @ delenn ~] $ green = "wc -l vars.sh"[erbo @ delenn ~] $ echo $ πράσινο«wc -l vars.sh»[erbo @ delenn ~] $ blue = "` wc -l vars.sh` "[erbo @ delenn ~] $ echo $ μπλε4 vars.sh

Η αντικατάσταση backtick συνήθως προκαλεί την εντολή "wc" καθώς την πληκτρολόγησα για να εκτελεστεί και να αντικατασταθεί με την έξοδο από αυτήν την εντολή. Αυτό συμβαίνει όταν περικλείω την τιμή που έχει εκχωρηθεί στη μεταβλητή σε διπλά εισαγωγικά, αλλά όχι όταν την περικλείω σε μεμονωμένα εισαγωγικά.