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

时间:2013-10-19 00:27:52

标签: javascript node.js bash sh

我正在尝试使用exec()函数从节点执行基本bash脚本。 bash脚本如下:

#!/bin/bash
ffmpeg -f concat -i <(for f in $1/*.mov ; do echo "file '$f'"; done) -c copy $1/output.mov

该脚本可以在命令行中正常运行,但从节点内运行时出现语法错误:line 2: syntax error near unexpected token('`

在运行此命令节点时,它会尝试使用sh而不是bash。任何人都可以验证这是真的,并提供可能的解决方法或解决方案吗?提前谢谢!

2 个答案:

答案 0 :(得分:3)

尝试child_process.execFile或只是明确地运行['/bin/bash', '/path/to/your/script.sh', arg1, arg2...]

答案 1 :(得分:2)

如果您使用的是最新版本的Node,则可以为exec添加以下选项:

{shell: "/bin/bash"}

请参阅:https://nodejs.org/api/child_process.html#child_process_child_process_exec_command_options_callback