为了账号安全,请及时绑定邮箱和手机立即绑定

在golang exec中转义双引号

在golang exec中转义双引号

Go
浮云间 2021-08-23 16:59:12
我需要运行以下命令: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.命令在命令行中执行时有效。为什么会发生这种情况,我该如何转义这些双引号以防止出现此错误?
查看完整描述

1 回答

?
慕田峪4524236

TA贡献1875条经验 获得超5个赞

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



查看完整回答
反对 回复 2021-08-23
  • 1 回答
  • 0 关注
  • 310 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信