sed命令字符串变量在单引号内的串联

弗雷迪

我想使用sed修改我的php.ini文件中的include_path指令。在下面,我有一个命令来查找字符串,并将指令放在匹配项后的一行上。但是,在保持$ {install_path}变量中的双引号的同时,我无法使其工作。双引号必须存在。

我要编辑的文件是php.ini。这是我的目标前后的几行,即“ UNIX:”之后的行:

;;;;;;;;;;;;;;;;;;;;;;;;;
; Paths and Directories ;
;;;;;;;;;;;;;;;;;;;;;;;;;

; UNIX: "/path1:/path2"
;include_path = "/path1:/path2"
;
; Windows: "\path1;\path2"

install_path定义为:

install_path="/var/www/mainapp"

我在下面使用的sed命令搜索字符串匹配,然后在其下方创建一个新行:

sed -i '/; UNIX: "\/path1:\/path2"/a include_path = "${install_path}/lib"' /etc/php.ini

php.ini中的预期输出为:

; UNIX: "/path1:/path2"
include_path = "/var/www/mainapp/lib"

在“; UNIX:...”行之后立即创建了include_path行

谢谢你的帮助。

乔纳森·勒夫勒(Jonathan Leffler)

您的主要问题是在保留文件中的引号的同时绕着shell的引用惯例跳舞。

你说你已经定义了install_path="/var/www/mainapp"; 请注意,引号已被外壳删除,因此字符串不包含引号。这在下面很重要。比较新旧:

老的:

sed -i '/; UNIX: "\/path1:\/path2"/a include_path = "${install_path}/lib"' /etc/php.ini

新的:

sed -i '/; UNIX: "\/path1:\/path2"/a include_path = "'"${install_path}/lib"'"' /etc/php.ini

嗯什么 您已将脚本正确地用单引号引起来,但这阻止了shell扩展${install_path}因此,您必须终止单引号字符串,但是要在输出中使用双引号,因此我将单引号放在了双引号之后。然后,我也将该值${install_path}用双引号引起来:"${install_path}/lib"双引号对于您引用的值并不重要,但是通常使用双引号是一个好主意。然后,我恢复单引号,第一个字符是.ini文件中包含路径字符串的右双引号,然后关闭单引号的字符串。是的,您可以通过其他方式写出最后一点,但是要说服我,要使我相信使用反斜杠的替代方法会更好,这需要花费大量的说服力。

如果您实际上已经保留了安装路径值周围的双引号:

install_path='"/var/www/mainapp"'

您可以使用:

sed -i '/; UNIX: "\/path1:\/path2"/a include_path = '"${install_path}/lib" /etc/php.ini

还要注意,只有GNUsed允许您将“附加文本”放在a命令的同一行POSIXsed不会,并且sed其他平台上的POSIX的其他变体也不会。例如,在Mac OS X上,您必须编写:

sed -i '/; UNIX: "\/path1:\/path2"/a\
include_path = '"${install_path}/lib" /etc/php.ini

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

获取单引号内的字符串

来自分类Dev

运行存储在变量中的mysql命令字符串

来自分类Dev

用字符串内的双引号替换单引号

来自分类Dev

双引号和单引号内的Grep字符串

来自分类Dev

另一个不可变的字符串变量中的单引号内的字符串变量-VBA

来自分类Dev

SED:单引号后替换字符串

来自分类Dev

在sed替换字符串中转义'(单引号)

来自分类Dev

在Google Colab中的Shell脚本中串联命令字符串

来自分类Dev

Groovy外部命令,在命令字符串中带有引号

来自分类Dev

Groovy外部命令,在命令字符串中带有引号

来自分类Dev

命令字符串修改乐趣

来自分类Dev

如何在单引号字符串中使用变量?

来自分类Dev

单引号字符串中的Powershell变量扩展

来自分类Dev

字符串中插入单引号的python变量

来自分类Dev

将带有嵌套引号的命令字符串解析为参数和标志

来自分类Dev

将带有嵌套引号的命令字符串解析为参数和标志

来自分类Dev

如何获取单引号内的字符串?

来自分类Dev

sql中字符串内的单引号

来自分类Dev

Swift-有没有办法在串联字符串中包含单引号(')?

来自分类Dev

用单引号转义字符串的单引号

来自分类Dev

Bourne Shell日期命令字符串用作变量-返回0

来自分类Dev

将命令字符串保存到bash变量中

来自分类Dev

从带有单引号和双引号的字符串执行命令

来自分类Dev

从Swift字符串中删除周围的引号,同时保持内部引号类似于Kotlin命令字符串.removeSurrounding

来自分类Dev

SQL字符串中的单引号

来自分类Dev

单引号字符串提取

来自分类Dev

替换字符串中的单引号

来自分类Dev

将环境变量从双引号字符串转换为单引号

来自分类Dev

单引号字符串字符串内插

Related 相关文章

热门标签

归档