gpt4 book ai didi

php - 防止 sed 扩展变量

转载 作者:太空狗 更新时间:2023-10-29 12:00:25 24 4
gpt4 key购买 nike

我正在尝试替换一个过时项目中出现的所有 mysql_query($sql)

执行的命令行:

find services/mobile/phones.php -exec sed -i "s/mysqli_query(/mysqli_query($link,/g" {} \;

预期:mysqli_query($link,$sql);

结果:mysqli_query(,$sql);

我试图自己修复它,但这是我的失败信。

有什么想法吗?

最佳答案

这里的问题是 sed 中的双引号使得其中的变量被扩展。然后,$link 被扩展到它的值,显然没有设置。

如果你不想发生这种情况,只需使用单引号:

$ echo "hello" | sed 's/h/$XXX/'
$XXXello
$ echo "hello" | sed "s/h/$XXX/"
ello

在你的情况下:

find -name "hello.txt" -exec sed -i.bak 's/mysqli_query(/mysqli_query($link,/g' {} \;
# ^ ^

看一个只有 sed 部分的小例子:

$ cat hello.txt 
this is mysqli_query($query) blabla

带双引号:

$ sed "s/mysqli_query(/mysqli_query($link,/g" hello.txt
this is mysqli_query(,$query) blabla
# ^^
# unchanged

单引号:

$ sed 's/mysqli_query(/mysqli_query($link,/g' hello.txt
this is mysqli_query($link,$query) blabla
# ^^^^^
# changed!

关于php - 防止 sed 扩展变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39167001/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com