我有以下 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
我想要的是替换$xdebug_config
变量EXCEPT第一行中提到的文件中的第一行。例如,如果文件是:
line 1
line 2
somethig else
lalala
我想像这样转换:
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
我怎样才能做到这一点?
编辑 1
根据评论的要求,$xdebug_config
可以包含以下可能的值:
/etc/php/7.2/mods-available/xdebug.ini
/etc/php/5.6/mods-available/xdebug.ini
/etc/php/7.0/mods-available/xdebug.ini
一般会采用以下格式:
/etc/php/^number^.^number^/mods-available/xdebug.ini
编辑 2
为了更清晰,我完善了 shell 脚本。
HERE 文档怎么样?
要用任意已知数据替换文件的内容,但保留第一行,您可以执行以下操作:
制作新文件并在其完全组合后将其移动到位的优点是您可以保留最后一个版本以备需要回滚时使用。
如果您对此不感兴趣,您可以将旧文件吹走,但您不能在同一操作中读取和写入它,所以这样的事情会起作用:
我会写
sponge
在moreutils
包里。如果您不想安装它:你可以这样做: