的片段下方的目的是傾聽,並從目錄中選擇了幾首歌曲:猛砸描述
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。特別是,這樣的過程沒有控制終端。 –