シンプルにしてください:)
grep + エコー で十分です:
grep -qxF 'include "/configs/projectname.conf"' foo.bar || echo 'include "/configs/projectname.conf"' >> foo.bar
-q
静かにしてください-x
行全体に一致-F
パターンはプレーンな文字列です- https://linux.die.net/man/1/grep
編集:@cerin および @thijs-wouters の提案を組み込み .
これを試してください:
grep -q '^option' file && sed -i 's/^option.*/option=value/' file || echo 'option=value' >> file
これは grep
を使用したクリーンで読みやすく、再利用可能なソリューションになります。 そして echo
ファイルがまだ存在しない場合にのみ、ファイルに行を追加するには:
LINE='include "/configs/projectname.conf"'
FILE='lighttpd.conf'
grep -qF -- "$LINE" "$FILE" || echo "$LINE" >> "$FILE"
行全体を一致させる必要がある場合は、grep -xqF
を使用します
-s
を追加 ファイルが存在しない場合にエラーを無視し、その行だけで新しいファイルを作成します。