的片段下方的目的是倾听,并从目录中选择了几首歌曲:猛砸描述
exec 3<&1
find /some/directory -name '*.mp3' -print0 | xargs -0 bash -c '
for i; do
mplayer -ss 10 "$i" 1<&3
read -p "Select? (y/n)" -n 1 choice 1<&3
if [ "$choice" = "y" -o "$choice" = "Y" ]; then
echo "$i" > /tmp/selected_songs.txt
fi
done
'
exec 3<&-
的目的是让mplayer
和外壳read
从键盘接受输入,但ins't锻炼!为此,我认为FD 3将指向find
和xargs
进程的键盘输入。这再次被传递到执行的外壳,其中mplayer
和外壳read
被执行;但它没有!
这里怎么回事?
你没有说的事情到底如何出了问题,但我会猜测“mplayer”无法响应键盘命令。如果是这种情况,那么它并不一定意味着你的重定向失败 - 这可能意味着'mplayer'使用不同的方法来收集键盘输入,而不是从它的标准输入读取,而且'mplayer'启动时这种方法不起作用来自非交互式shell。特别是,这样的过程没有控制终端。 –