変数を使用してファイル内の文字列を検索しようとしています。
3 つまたは 4 つのパラメーターを受け入れるスクリプトがあります。3 つが必要です。4番目は必須ではありません。
同じ行内で一致する 3 つのパラメーターをテキスト ファイルで検索したいと思います。一致する場合は、その行を削除して新しい行に置き換えます。基本的に、設定されている場合は 4 番目のパラメーターを更新し、回避します。重複するエントリ。
現在、これは私が持っているものです:
input=$(egrep -e '$domain\s+$type\s+$item' ~/etc/security/limits.conf)
if [ "$input" == "" ]; then
echo $domain $type $item $value >>~/etc/security/limits.conf
echo \"$domain\" \"$type\" \"$item\" \"$value\" has been successfully added to your limits.conf file.
else
cat ~/etc/security/limits.conf | egrep -v "$domain|$type|$item" >~/etc/security/limits.conf1
rm -rf ~/etc/security/limits.conf
mv ~/etc/security/limits.conf1 ~/etc/security/limits.conf
echo $domain $type $item $value >>~/etc/security/limits.conf
echo \"$domain\" \"$type\" \"$item\" \"$value\" has been successfully added to your limits.conf file.
exit 0
fi
input=egrep
これで、 etc.. が機能しないことはすでにわかっています。いくつかの値をハードコーディングすると機能しますが、それらの変数は受け入れられません。基本的に私はdomain=$1
、type=$2
などを持っています。
3つの変数すべてが1行内で一致しない場合は、ファイルの最後にパラメーターを追加するだけで、パラメーターが一致する場合はそれらを削除して、ファイル。sed や awk などの他のものを使用できることはわかっていますが、まだ学習していません。
これは学校の課題のためのものであり、すべての助けに非常に感謝していますが、それが機能する/機能しない理由と方法も知りたいので、それに対する回答も提供していただければ幸いです!