2016-03-06 37 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