humanoid1 schrieb:
Danke das dieses Forum existiert.
Herzlich willkommen!
Bei folgendem String
| sed -i 's/\// "${distro_id} ${distro_codename}-updates"/"${distro_id} ${distro_codename}-updates"' /etc/apt/apt.conf.d/50unattended-upgrades
|
erhalte ich immer eine Fehlermeldung
| sed: -e Ausdruck #1, Zeichen 49: Unbekannte Option für »s«
|
Meine Vermutung, dass diese vielen Sonderzeichen jedes einzelne maskiert werden muss. Doch obwohl ich alle maskiert hatte mit dem Backslash "\", kamen wieder Fehlermeldungen. Daher poste ich meinen ursprünglichen String.
Nein, das Problem ist, dass Du einen Forward Slash nicht escaped hast und dann fehlt auch der schließende Forward Slash.
s/\// "${distro_id} ${distro_codename}-updates"/"${distro_id} ${distro_codename}-updates"
Das führt dazu, dass alles hinter dem markierten als Option betrachtet wird. Eine einfache Lösung ist, einen anderen Trenner zu nehmen, z.B. "#":
| sed -i 's#/# "${distro_id} ${distro_codename}-updates"/"${distro_id} ${distro_codename}-updates"#' /etc/apt/apt.conf.d/50unattended-upgrades
|
Allerdings: damit das wirklich robust ist, musst Du entweder sicher stellen, dass in den Variablen der Trenner nicht vorkommt ODER Du musst den Inhalt der Variablen escapen.
Ich hoffe, dass mein erstes post richtig ist und nicht viele Rüffel auslöst ☺
Alles gut.