Adicione (prefixar) linha ao arquivo, se o parâmetro ainda não existir

0

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.

    
por user3142695 04.10.2017 / 16:42

3 respostas

1

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
    
por 04.10.2017 / 16:47
0

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
    
por 04.10.2017 / 16:51
0

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 
    
por 04.10.2017 / 17:20

Tags