Solo mantenlo simple :)
grep + eco debería ser suficiente:
grep -qxF 'include "/configs/projectname.conf"' foo.bar || echo 'include "/configs/projectname.conf"' >> foo.bar
-q
cállate-x
coincide con toda la línea-F
el patrón es una cadena simple- https://linux.die.net/man/1/grep
Editar:incorporó sugerencias de @cerin y @thijs-wouters .
Prueba esto:
grep -q '^option' file && sed -i 's/^option.*/option=value/' file || echo 'option=value' >> file
Esta sería una solución limpia, legible y reutilizable usando grep
y echo
para agregar una línea a un archivo solo si aún no existe:
LINE='include "/configs/projectname.conf"'
FILE='lighttpd.conf'
grep -qF -- "$LINE" "$FILE" || echo "$LINE" >> "$FILE"
Si necesita hacer coincidir toda la línea, use grep -xqF
Agregar -s
para ignorar los errores cuando el archivo no existe, creando un nuevo archivo con solo esa línea.