gpt4 book ai didi

go - golang exec 中的双引号转义

转载 作者:IT王子 更新时间:2023-10-29 01:24:43 31 4
gpt4 key购买 nike

我需要运行以下命令:

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 执行相同的程序时,如果您直接传递参数列表,您应该省略那些额外的引号。

关于go - golang exec 中的双引号转义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26473674/

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