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

我试图执行一个基本的bash脚本从节点使用exec()函数。 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 。 任何人都可以validation这是真实的,并给出一个可能的解决方法或解决scheme? 谢谢提前!

试试child_process.execFile或者直接运行['/bin/bash', '/path/to/your/script.sh', arg1, arg2...] your ['/bin/bash', '/path/to/your/script.sh', arg1, arg2...] script.sh ['/bin/bash', '/path/to/your/script.sh', arg1, arg2...]

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

 {shell: "/bin/bash"} 

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