如何在后台运行的程序中传递stdinput?

时间:2014-09-03 14:56:07

标签: bash shell sh youtube-dl

我一直在尝试编写一个运行命令的shell脚本

youtube-dl -o C:\Users\3435\Desktop\35.mp4  http://www.youtube.com/watch?v=I1rxfwFxB8M

可以通过在shell上键入q来退出此命令。

我可以将参数传递给脚本但是如何在脚本内或通过其他脚本自动执行。 我可以从脚本中杀死这个youtube-dl进程,但我不想这样做,因为它影响了commad的执行。

请告诉我如何确保youtube-dl进程从其他脚本或同一脚本中收到q。

2 个答案:

答案 0 :(得分:0)

您可以从命名管道重定向其标准输入:

mkfifo ydl-input
youtube-dl -o 'C:\Users\3435\Desktop\35.mp4' \
           'http://www.youtube.com/watch?v=I1rxfwFxB8M' \
           < ydl-input

然后写&#34; q&#34;以后随时到命名管道。

echo q > ydl-input

答案 1 :(得分:0)

我们可能不需要做所有这些。我们将终端打印输出导出到文件并在后台运行整个文件。

youtube-dl -o ~/Desktop/35.mp4  http://www.youtube.com/watch?v=I1rxfwFxB8M > tmp.txt 2>&1 &

您可以删除输出。