我正在寻找使用变量在文件中搜索字符串。
我有一个可以接受 3 或 4 个参数的脚本:需要 3 个;第四个不是强制性的。
我想在文本文件中搜索在同一行中匹配的 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 个变量在一行中都不匹配,那么它只会将参数附加到文件的末尾,但如果参数匹配,那么我希望它们被删除,并附加到文件。我知道我可以使用 sed 和 awk 等其他东西,但我还没有学习它们。
这是一个学校作业,非常感谢所有帮助,但我也想了解它为什么以及如何工作/不工作,所以如果你也能提供答案,那就太好了!