Bash 当逐行读取文件时,我只能在第一行执行ffmpeg
我正在编写一个Bash脚本,其中我逐行读取文件(这是一个常见的问题,是由Bash 当逐行读取文件时,我只能在第一行执行ffmpeg,bash,video,ffmpeg,Bash,Video,Ffmpeg,我正在编写一个Bash脚本,其中我逐行读取文件(这是一个常见的问题,是由ffmpeg的特殊行为引起的(在ssh中也会发生) 引用的内容处理您的案件几乎完全符合: 这里发生了什么?让我们看第一个例子。read从标准输入(fd0)读取一行,将其放入file参数中,然后执行ffmpeg。与从BASH执行的任何程序一样,ffmpeg继承了标准输入,出于某种原因,它会读取。我不知道为什么。但在任何情况下,当ffmpeg读取stdin时,会从find命令中吸取所有输入,使循环陷入饥饿状态 医生太长了,读不下
ffmpeg
的特殊行为引起的(在ssh
中也会发生)
引用的内容处理您的案件几乎完全符合:
这里发生了什么?让我们看第一个例子。read从标准输入(fd0)读取一行,将其放入file参数中,然后执行ffmpeg。与从BASH执行的任何程序一样,ffmpeg继承了标准输入,出于某种原因,它会读取。我不知道为什么。但在任何情况下,当ffmpeg读取stdin时,会从find命令中吸取所有输入,使循环陷入饥饿状态
医生太长了,读不下去了。
主要有两种选择:
- 添加
尝试在
行上方的循环中添加另一行…ffmpeg
。或者尝试将shebang行更改为echo Processing$line
#!/bin/bash-xv
while read -r line; do ffmpeg -i "$line" [ MORE OPTIONS ... ] done < <(find /home/user/ -iname "*.MP4")
while IFS= read -r line <&3; do # Here read is reading from FD 3, to which 'file' is redirected. done 3<file