当用ffmpeg将脚本击打时,第一个角色消失了



我经常用bash创建bash脚本,然后将结果吹进bash ...当我这样做时:

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

我得到

bash: line 2: cho: command not found

" echo"的" e"去了哪里?FFMPEG在那里做什么?其他命令正常工作。

还要注意:

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

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

一个修复程序是为ffmpeg的重定向标准输入:

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

但是,我不禁指出,实际上没有任何理由运行这样的脚本。如果您在单独的过程中需要它,请启动一个子壳:

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

最新更新