【发布时间】:2017-12-01 09:33:21
【问题描述】:
我正在尝试在我的 php.ini 文件顶部直接在 [PHP] 行下编写一个heredoc。我也在尝试假设以下条件:
- [PHP] 可能不在最顶端(在其他用例中,很高兴知道如何将 heredoc 放在文件中的任何位置之后,因此指定“第 2 行”并不是真的有用李>
- heredoc 必须包含在文件中。在打开另一个文件并读入现有文件时不使用 sed
- 假设只有一个 [PHP] 标识符实例。在这个学习练习中,我不担心迭代列表,也不担心 Sed/Awk 会找到多个我的搜索字符串的实例
- 我真的很想像在 heredoc 中一样将每个项目放在单独的行中
脚本:
myvar=$(cat << END_HEREDOC
[xdebug]
zend_extension=/usr/lib/php/20151226/xdebug.so
xdebug.remote_host = localhost
xdebug.idekey = "PHPSTORM"
xdebug.remote_autostart = 1
xdebug.remote_connect_back = 1
xdebug.remote_enable=1
xdebug.remote_port=9000
xdebug.show_local_vars=0
xdebug.var_display_max_data=10000
xdebug.var_display_max_depth=20
xdebug.show_exception_trace=0
xdebug.remote_handler=dbgp
END_HEREDOC
)
echo ${myvar}
sed -i "/\[PHP\]'/${myvar}/'" php.ini
在我尝试过的每一次迭代中,我最终都会得到一个看起来像这样的 php.ini:
[PHP]
$myvar
或者,我收到以下错误:
sed: -e expression #1, char 15: unknown command: `e'
我的目标是:
[PHP]
[xdebug]
zend_extension=/usr/lib/php/20151226/xdebug.so
xdebug.remote_host = localhost
xdebug.idekey = "PHPSTORM"
xdebug.remote_autostart = 1
xdebug.remote_connect_back = 1
xdebug.remote_enable=1
xdebug.remote_port=9000
xdebug.show_local_vars=0
xdebug.var_display_max_data=10000
xdebug.var_display_max_depth=20
xdebug.show_exception_trace=0
xdebug.remote_handler=dbgp
【问题讨论】:
-
你
sed命令的格式是sed "/a/b/"不应该是sed "s/a/b/"吗?