如果参数尚不存在,则将行添加(前置)到文件中

如果参数尚不存在,则将行添加(前置)到文件中

我需要external_url 'https://ci.$domain.com'在文件前面添加一个参数/opt/gitlab/config/gitlab.rb

我将这样开始:

sed -i -e "external_url 'https://ci.$domain.de'" -e "wq" /opt/gitlab/config/gitlab.rb

但我还需要检查该参数是否已存在于文件中以避免多次输入。

答案1

grep+sed逻辑||运算符:

p="external_url 'https://ci.$domain.com'"
grep "$p" /opt/gitlab/config/gitlab.rb || sed -i "1i $p" /opt/gitlab/config/gitlab.rb

答案2

检查文件中是否存在链接:

link="external_url 'https://ci.$domain.de'"

if grep -Fxq "$link"  /opt/gitlab/config/gitlab.rb ; then
    echo $link already exists
else
    <command to insert the link>
fi

答案3

你可以尝试用单线

$ for i in ${arrayName[@]}; do if grep "$i" /opt/gitlab/config/gitlab.rb > /dev/null; then continue; else sed -i '1i $i' /opt/gitlab/config/gitlab.rb; fi; done 

相关内容