コンテンツXを含む行でファイルが準備されているかどうか、それ以外の場合は行が追加されたかどうかを知る必要があります。私が試したコードは次のとおりです。
if ! $(grep 'eval $(perl -I$HOME/foo/lib/perl5 -Mlocal::lib=$HOME/foo)' ~/.bashrc)
then
echo 'eval $(perl -I$HOME/foo/lib/perl5 -Mlocal::lib=$HOME/foo)' >> ~/.bashrc
fi
ベストアンサー1
#!/bin/bash
LINE='eval $(perl -I$HOME/foo/lib/perl5 -Mlocal::lib=$HOME/foo)'
if ! grep -qF "$LINE" file.txt ; then echo "$LINE" >> file.txt ; fi
$(...) は、エラーレベルの値ではなくコマンドの結果を返します。正しい戻りコードを取得するために、コマンドを置き換えることなく使用できます。