2016-03-06 41 views
-1

我有两个脚本,我管在一起。 script1.sh | script2.sh最初他们是相同的一部分,但我永远不能使其正常工作。 script1的最后一部分调用youtube-dl来读取批处理文件,并将列表url输出到终端。注意尾随-允许youtube-dl从标准输入读取。如何将两个单独的脚本组合在一起以制作一个脚本而不是两个脚本?

cat $HOME/file2.txt | youtube-dl --ignore-config -iga - 

而且SCRIPT2开始:

while read -r input 
do 
ffmpeg [arg] [input] [arg2] [output] 

什么我没有看到,是造成当两半合并但如果一个被管道输送到其他工作的脚本挂?

编辑 - 这是一个有趣的问题,答案是如何。生活和学习。

回答

0

简短的答案是,|需要使脚本一起工作。在上面的问题中,我原本有一个如此结束的脚本:

cat $HOME/file2.txt | youtube-dl --ignore-config -iga - 
while read -r input 
do 
ffmpeg [arg] [input] [arg2] [output] 

但这不起作用。我们需要向管道内注入while循环:

cat "$HOME/file2.txt" | youtube-dl --ignore-config -iga - | while read -r input 

但是我们通过这样做,而不是得到更有效的方式相同的结果:

youtube-dl --ignore-config -iga "$HOME/file2.txt" | while read -r input 

,或者如果你宁愿:

youtube-dl --ignore-config -iga "$HOME/file2.txt" | \ 
while read -r input  
1

我可能会使用这样的(由线加工生产线):

#!/usr/bin/bash 
inputFile="$HOME/file2.txt" 
while read -r line 
do 
    youtubeResult=$(youtube-dl --ignore-config -iga - "$line") 
    ffmpeg [arg] "$youtubeResult" [arg2] [output] 
done < "$inputFile" 
+0

@RanyAlbegWein你的意思是youtubeResult任务,不是吗?我已经更新了答案。 – F404

+0

您在赋值运算符之前和之后都有空格。 –

+0

将脚本粘贴到http://shellcheck.net/以查看错误的位置。 – tripleee