使用ffmpeg将脚本滚动到bash时,第一个字符消失

时间:2017-10-03 14:35:08

标签: linux bash shell ffmpeg

我经常使用bash创建bash脚本并将结果传递给bash ...当我这样做时:

echo -e "ffmpeg -loglevel quiet -f lavfi -i nullsrc -t 1 -f null /dev/null\necho foo"|bash

我得到了

bash: line 2: cho: command not found

' e'回声'走? ffmpeg在那做什么?其他命令工作正常。

另请注意:

echo -e "ffmpeg -loglevel quiet -f lavfi -i nullsrc -t 1 -f null /dev/null\necho foo" > /tmp/foo.sh
bash /tmp/foo.sh #works
bash < /tmp/foo.sh #doesn't

1 个答案:

答案 0 :(得分:1)

ffmpeg也从标准输入读取,它继承自其父进程,即读取命令行的bash进程。这意味着ffmpeg正在新行后面的e读取echo

一个解决方法是重定向ffmpeg的标准输入:

echo -e "ffmpeg -loglevel quiet -f lavfi -i nullsrc -t 1 -f null /dev/null < /dev/null \necho foo"|bash

但是,我不禁要指出,没有任何理由可以运行这样的脚本。如果您想在单独的进程中使用它,请启动子shell:

(
  ffmpeg -loglevel quiet -f lavfi -i nullsrc -t 1 -f null /dev/null
  echo foo
)