Restez simple :)
grep + écho devrait suffire :
grep -qxF 'include "/configs/projectname.conf"' foo.bar || echo 'include "/configs/projectname.conf"' >> foo.bar
-q
tais-toi-x
correspondre à toute la ligne-F
le motif est une chaîne simple- https://linux.die.net/man/1/grep
Edit :incorporé les suggestions de @cerin et @thijs-wouters .
Essayez ceci :
grep -q '^option' file && sed -i 's/^option.*/option=value/' file || echo 'option=value' >> file
Ce serait une solution propre, lisible et réutilisable en utilisant grep
et echo
pour ajouter une ligne à un fichier uniquement s'il n'existe pas déjà :
LINE='include "/configs/projectname.conf"'
FILE='lighttpd.conf'
grep -qF -- "$LINE" "$FILE" || echo "$LINE" >> "$FILE"
Si vous devez faire correspondre toute la ligne, utilisez grep -xqF
Ajouter -s
pour ignorer les erreurs lorsque le fichier n'existe pas, en créant un nouveau fichier avec uniquement cette ligne.