Halte es einfach :)
grep + Echo sollte genügen:
grep -qxF 'include "/configs/projectname.conf"' foo.bar || echo 'include "/configs/projectname.conf"' >> foo.bar
-q
sei ruhig-x
der ganzen Zeile entsprechen-F
Muster ist ein einfacher String- https://linux.die.net/man/1/grep
Bearbeiten:Vorschläge von @cerin und @thijs-wouters eingefügt .
Versuchen Sie Folgendes:
grep -q '^option' file && sed -i 's/^option.*/option=value/' file || echo 'option=value' >> file
Dies wäre eine saubere, lesbare und wiederverwendbare Lösung mit grep
und echo
um einer Datei nur dann eine Zeile hinzuzufügen, wenn sie noch nicht existiert:
LINE='include "/configs/projectname.conf"'
FILE='lighttpd.conf'
grep -qF -- "$LINE" "$FILE" || echo "$LINE" >> "$FILE"
Wenn Sie die ganze Zeile abgleichen müssen, verwenden Sie grep -xqF
Fügen Sie -s
hinzu um Fehler zu ignorieren, wenn die Datei nicht existiert, indem eine neue Datei mit genau dieser Zeile erstellt wird.