Ich möchte void mainfunction()
am Anfang einer Datei hinzufügen . Ich lese den tatsächlichen Namen der Datei aus einer anderen Datei und den Namen der Hauptfunktion aus einer anderen Datei. Ich habe benutzt:
sed -i 1i void $name_main() $name_c
in dem der Name der Datei gespeichert ist name_c
und in dem name_main
der Name der Hauptfunktion gespeichert ist . Dieser Befehl wird jedoch void $main_name()
am Anfang der Datei angehängt. Wie kann ich das machen?
linux
sed
bash-scripting
Diya
quelle
quelle
Antworten:
Sie müssen doppelte Anführungszeichen wie folgt verwenden:
Erläuterung
Betrachten Sie einfache Anführungszeichen:
Die Shell interferiert nicht mit Strings in Anführungszeichen. Sie werden
sed
unverändert weitergegeben. Daher wird die Literalzeichenfolge$name_main
in der Ausgabe angezeigt. Ebenso versucht dieser Befehl, auf den Dateinamen$name_c
und nicht auf den durch den Wert dieser Shell-Variablen angegebenen Namen zu reagieren.Betrachten Sie keine Anführungszeichen:
Ohne Anführungszeichen führt die Shell die Wortteilung durch. Dies kann alle Probleme verursachen. Ohne Anführungszeichen erwartet die Shell außerdem, dass Klammern eine Subshell starten. Das willst du auch nicht.
Bei doppelten Anführungszeichen wird die Shell-Variable ersetzt, die Wortteilung jedoch nicht. Hier ist es die richtige Wahl.
quelle