Das ist mein einfacher Shell-SkriptMit sed Befehl in Shell-Skript
sample.sh
LOCALCONFIGDIR="Install"
CONFLOC="$LOCALCONFIGDIR/server.conf"
echo "Enter Web Url:"
read weburl
echo "sed 's/^\(ServerName\)$/\1 "$weburl"/' "$CONFLOC
sed "'s/^\(ServerName\)$/\1 "$weburl"/' "$CONFLOC
Wenn ich diesen Code ausführen, ich das Ergebnis in Echo-Befehl erhalten, wie folgend.
Aber wenn sed Befehl in der nächsten Zeile ausgeführt wird, wird der folgende Fehler angezeigt.
Ich habe versucht den Befehl in Echo-Anweisung von Terminal-Bildschirm produziert, es funktioniert. Aber Line number 5
, arbeitet nicht von Shell-Skript
Es funktioniert. sed "s% $^\ (ServerName \) $% \ 1 www.weburl.com%" Install/server.conf. Aber es fügt den Text www.weburl.com nach dem ServerName nicht hinzu. –
Ich habe gerade ein streunendes '$' in der zweiten 'sed' entfernt; Hättest du das benutzt, hätte das Spiel nicht funktioniert. Wenn das nicht das Problem ist, dann hat Ihre Konfigurationsdatei möglicherweise Leerzeichen vor oder nach 'ServerName' in der Konfigurationszeile, oder vielleicht enthält die Datei keine Zeile, die nur' ServerName' enthält. –
Vielleicht sed Befehle werden am besten gedient, indem Sie einfache Anführungszeichen verwenden und die doppelt zitierten Shellvariablen d. H. 'Sed 's /.../'" $ {var} "'/' file'. Der Grund dafür ist, dass Meta-Zeichen, die unwissentlich in den sed-Befehlen verwendet werden, von der Shell interpoliert werden. – potong