Sii semplice :)
grep + eco dovrebbe essere sufficiente:
grep -qxF 'include "/configs/projectname.conf"' foo.bar || echo 'include "/configs/projectname.conf"' >> foo.bar
-q
stai zitto-x
abbina l'intera linea-F
pattern è una semplice stringa- https://linux.die.net/man/1/grep
Modifica:ha incorporato i suggerimenti di @cerin e @thijs-wouters .
Prova questo:
grep -q '^option' file && sed -i 's/^option.*/option=value/' file || echo 'option=value' >> file
Questa sarebbe una soluzione pulita, leggibile e riutilizzabile utilizzando grep
e echo
per aggiungere una riga a un file solo se non esiste già:
LINE='include "/configs/projectname.conf"'
FILE='lighttpd.conf'
grep -qF -- "$LINE" "$FILE" || echo "$LINE" >> "$FILE"
Se hai bisogno di abbinare l'intera riga usa grep -xqF
Aggiungi -s
per ignorare gli errori quando il file non esiste, creando un nuovo file con solo quella riga.