登录
首页 >  Golang >  Go问答

go语言 exec中怎么转义双引号

来源:Golang技术栈

时间:2023-03-21 14:15:53 357浏览 收藏

学习Golang要努力,但是不要急!今天的这篇文章《go语言 exec中怎么转义双引号》将会介绍到golang等等知识点,如果你想深入学习Golang,可以关注我!我会持续更新相关文章的,希望对大家都能有所帮助!

问题内容

我需要运行以下命令:

ffmpeg -i input.jpg -vf scale="'if(gt(a,4/3),320,-1)':'if(gt(a,4/3),-1,240)'" output_320x240_boxed.png

所以我执行:

cmd = exec.Command("ffmpeg", "-i", "input.jpg", "-vf", "scale="'if(gt(a,4/3),640,-1)':'if(gt(a,4/3),-1,300)'"", "output_320x240_boxed.png")

它失败并出现以下错误:

Error when evaluating the expression 'if(gt(a,4/3),-1,300)"'.
Maybe the expression for out_w:'"if(gt(a,4/3),640,-1)' or for out_h:'if(gt(a,4/3),-1,300)"' is self-referencing.

命令在命令行中执行时起作用。为什么会发生这种情况,我该如何转义这些双引号以防止出现此错误?

正确答案

当您执行给定的ffmpeg命令行时,您的 shell 会将其解析为一组命令行参数,这些参数本质上是:

{
    "ffmpeg",
    "-i",
    "input.jpg",
    "-vf",
    "scale='if(gt(a,4/3),320,-1)':'if(gt(a,4/3),-1,240)'",
    "output_320x240_boxed.png",
}

参数中的额外引号scale=...由 shell 解释,而不是传递给底层程序。因此,当使用 Go 执行相同的程序时,您将直接传递参数列表,您应该省略那些额外的引号。

文中关于golang的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《go语言 exec中怎么转义双引号》文章吧,也可关注golang学习网公众号了解相关技术文章。

声明:本文转载于:Golang技术栈 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>