Angenommen, ich muss Anführungszeichen verwenden, um die Subshell-Ausgabe wie folgt zu kapseln:
DATA="$(cat file.hex | xxd -r)"
Aber ich muss solche Sachen verschachteln wie:
DATA="$(cat file.hex | xxd -r | tr -d \"$(cat trim.txt)\")"
Ich kann keine einfachen Anführungszeichen verwenden, da die darin enthaltenen Variablen nicht erweitert werden. Das Ausblenden von Anführungszeichen funktioniert nicht, da sie nur als passiver Text behandelt werden.
Wie gehe ich damit um?
DATA="$(cat file.hex | xxd -r | tr -d "$(cat trim.txt)")"
?Antworten:
Sie müssen die Anführungszeichen in einer Subshell nicht maskieren, da die aktuelle Shell sie nicht interpretiert (sie interpretiert eigentlich nichts von
$(
bis)
) und die Subshell keine Anführungszeichen kennt, die über ihnen liegen.Das Zitieren einer Unterschale bei der Variablenzuweisung ist ebenfalls nicht erforderlich. Weitere Informationen finden Sie unter
man bash
.quelle
Sie müssen den geschachtelten Anführungszeichen nicht entkommen. Überraschenderweise werden sie richtig analysiert!
quelle