Eu tenho o seguinte script de shell:
#!/bin/sh
echo "Configuring Xdebug"
ip=10.0.2.2
xdebug_config="/etc/php/7.2/mods-available/xdebug.ini"
echo "IP for the xdebug to connect back: ${ip}"
echo "Xdebug Configuration path: ${xdebug_config}"
echo "Port for the Xdebug to connect back: ${XDEBUG_PORT}"
echo "Optimize for ${IDE} ide"
if [ $IDE=='atom' ]; then
echo "Configuring xdebug for ATOM ide"
config="xdebug.remote_enable = 1
xdebug.remote_host=${ip}
xdebug.remote_port = ${XDEBUG_PORT}
xdebug.max_nesting_level = 1000
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_autostart=true
xdebug.remote_log=xdebug.log"
# replace the file in $xdebug_config var except first line
fi
O que eu quero é substituir a primeira linha no arquivo mencionado na $xdebug_config
variável EXCETO a primeira linha. Por exemplo, se o arquivo for:
line 1
line 2
somethig else
lalala
Eu quero ser convertido assim:
line 1
xdebug.remote_enable = 1
xdebug.remote_host=${ip}
xdebug.remote_port = ${XDEBUG_PORT}
xdebug.max_nesting_level = 1000
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_autostart=true
xdebug.remote_log=xdebug.log
Como posso conseguir isso?
Editar 1
Conforme solicitado nos comentários, $xdebug_config
pode conter esses valores possíveis:
/etc/php/7.2/mods-available/xdebug.ini
/etc/php/5.6/mods-available/xdebug.ini
/etc/php/7.0/mods-available/xdebug.ini
Geralmente será no seguinte formato:
/etc/php/^number^.^number^/mods-available/xdebug.ini
Editar 2
Aperfeiçoei o shell script para ficar mais claro.
Que tal um documento AQUI?
Para substituir o conteúdo de um arquivo por dados conhecidos arbitrários, mas preservar a primeira linha, você pode fazer algo como:
A vantagem de criar um novo arquivo e movê-lo para o lugar depois de totalmente composto é que você pode manter a última versão caso precise reverter.
Se você não tem interesse em fazer isso, pode simplesmente explodir o arquivo antigo, mas não pode ler e gravar nele na mesma operação, então algo assim funcionará:
eu escreveria
sponge
está nomoreutils
pacote. Se você não quiser instalar isso:você pode fazer assim: