Jednoduše:)
grep + echo by mělo stačit:
grep -qxF 'include "/configs/projectname.conf"' foo.bar || echo 'include "/configs/projectname.conf"' >> foo.bar
-q
buď zticha-x
sladit celý řádek-F
vzor je obyčejný řetězec- https://linux.die.net/man/1/grep
Edit:začleněny návrhy @cerin a @thijs-wouters .
Zkuste toto:
grep -q '^option' file && sed -i 's/^option.*/option=value/' file || echo 'option=value' >> file
Toto by bylo čisté, čitelné a opakovaně použitelné řešení využívající grep
a echo
přidat řádek do souboru pouze v případě, že ještě neexistuje:
LINE='include "/configs/projectname.conf"'
FILE='lighttpd.conf'
grep -qF -- "$LINE" "$FILE" || echo "$LINE" >> "$FILE"
Pokud potřebujete porovnat celý řádek, použijte grep -xqF
Přidejte -s
ignorovat chyby, když soubor neexistuje, vytvořením nového souboru pouze s tímto řádkem.