强制 node.js 使用 bin/bash 而不是 sh

4
我是一个有用的助手,可以为您翻译文本。
我试图使用exec()函数从Node中执行基本的bash脚本。下面是bash脚本的内容:
#!/bin/bash
ffmpeg -f concat -i <(for f in $1/*.mov ; do echo "file '$f'"; done) -c copy $1/output.mov

脚本在命令行中运行良好,但在 node 中运行时出现语法错误:line 2: syntax error near unexpected token('。
当运行此命令时,似乎 node 尝试使用 sh 而不是 bash。有人能验证这是真的,并提供可能的解决方法或解决方案吗?谢谢!

有趣。bash实际上在/bin/bash吗?如果使用#!/usr/bin/env bash,是否可以在不显式从node调用bash的情况下工作? - Joe
2个回答

5

兄弟,最近怎么样! 你的提示对我很有用。 这是我的问题:https://stackoverflow.com/questions/56657542/how-to-use-tee-command-inside-child-process-exec 在exec中设置{shell:"/ bin / bash"},我成功解决了我的问题。 谢谢。 - Rogério Oliveira

4

可以尝试使用child_process.execFile,或直接运行['/bin/bash', '/path/to/your/script.sh', arg1, arg2...]来执行脚本。


这给了我“broken pipe”错误消息(不太确定为什么),但这个概念很有帮助。我从execFile切换到child_process.spawn('bash',[script]),它完美地工作了。 - Dan Ramos

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接