Com grep + sed e shell lógico ||
operator:
p="external_url 'https://ci.$domain.com'"
grep "$p" /opt/gitlab/config/gitlab.rb || sed -i "1i $p" /opt/gitlab/config/gitlab.rb
Preciso prefixar um parâmetro external_url 'https://ci.$domain.com'
no arquivo /opt/gitlab/config/gitlab.rb
.
É assim que eu começaria com isso:
sed -i -e "external_url 'https://ci.$domain.de'" -e "wq" /opt/gitlab/config/gitlab.rb
Mas também preciso verificar se o parâmetro já não existe no arquivo para evitar várias entradas.
Para verificar se o link existe no arquivo:
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
Você pode tentar com um verso
$ 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