2012-11-02 41 views
0

我在互聯網上找到了一個腳本(https://calomel.org/youtube_wget.html),它用於存放youtube視頻。如何在bash中的循環中傳遞變量

因此,通過簡單的輸入./yt.pl youtubeLink,該腳本完美適用於單個剪輯。 但我想要擴展並使用文本文檔中的鏈接(download.txt) 。所以我在bash中創建了一個循環。循環看起來像這樣。

`

#!/bin/bash 
wordCount=$(cat download.txt | wc -l) 

for ((number=$wordCount; $number-lt$wordCount;number--)) 
do 
     link=$(sed -n $number"p" download.txt) 
     "./yt.pl "$link 
     sleep 3 
done 

唯一的問題與此不工作。它給了我下面的錯誤信息。

/auto.sh: line 7: ./yt.pl http://www.youtube.com/watch?v=KYzUd95h8X4: No such file or directory 

如果我只是運行這部分錯誤消息./yt.pl http://www.youtube.com/watch?v=KYzUd95h8X4它工作正常。

這裏是SSH窗口的完整輸出

./auto.sh: line 7: ./yt.pl : No such file or directory 
./auto.sh: line 7: ./yt.pl http://www.youtube.com/watch?v=XEAL23g2V6g: No such file or directory 
./auto.sh: line 7: ./yt.pl http://www.youtube.com/watch?v=KYzUd95h8X4: No such file or directory 
./auto.sh: line 7: ./yt.pl http://www.youtube.com/watch?v=IaADyDhg-CY: No such file or directory 
./auto.sh: line 7: ./yt.pl http://www.youtube.com/watch?v=JmY4RCCCll4: No such file or directory 
./auto.sh: line 7: ./yt.pl http://www.youtube.com/watch?v=D0p5RKzuJLU: No such file or directory 
./auto.sh: line 7: ./yt.pl http://www.youtube.com/watch?v=sY6-PY9wWQ8: No such file or directory 
./auto.sh: line 7: ./yt.pl http://www.youtube.com/watch?v=TRwcozVntTE: No such file or directory 
./auto.sh: line 7: ./yt.pl http://www.youtube.com/watch?v=ft5hp90FV74&feature=relmfu: No such file or directory 
./auto.sh: line 7: ./yt.pl http://www.youtube.com/watch?v=DB1E4M7bmeM: No such file or directory 
./auto.sh: line 7: ./yt.pl http://www.youtube.com/watch?v=t6w4yeT6OTg&feature=relmfu: No such file or directory 
./auto.sh: line 7: ./yt.pl http://www.youtube.com/watch?v=t-m88UZXn_8&feature=related: No such file or directory 
./auto.sh: line 7: ./yt.pl http://www.youtube.com/watch?v=iix8NxDN6mQ&feature=relmfu: No such file or directory 
./auto.sh: line 7: ./yt.pl http://www.youtube.com/watch?v=O3DvUKEZP_0&feature=relmfu: No such file or directory 
./auto.sh: line 7: ./yt.pl http://www.youtube.com/watch?v=IKVdSNfbilo: No such file or directory 
./auto.sh: line 7: ./yt.pl http://www.youtube.com/watch?v=V3kjn1zM7OI&feature=relmfu: No such file or directory 
./auto.sh: line 7: ./yt.pl http://www.youtube.com/watch?v=EhJheZepqqY&feature=relmfu: No such file or directory 
./auto.sh: line 7: ./yt.pl http://www.youtube.com/watch?v=59Oj_xpxh_g&feature=relmfu: No such file or directory 
./auto.sh: line 7: ./yt.pl http://www.youtube.com/watch?v=DLP8XMMEG0A: No such file or directory 
./auto.sh: line 7: ./yt.pl http://www.youtube.com/watch?v=pCY5ZRXQ3u0&feature=relmfu: No such file or directory 
./auto.sh: line 7: ./yt.pl http://www.youtube.com/watch?v=a8CHv8n6qpI&feature=relmfu: No such file or directory 
./auto.sh: line 7: ./yt.pl http://www.youtube.com/watch?v=afJXLpC95lQ&feature=relmfu: No such file or directory 
./auto.sh: line 7: ./yt.pl http://www.youtube.com/watch?v=6q4dPeUjmu8&feature=relmfu: No such file or directory 
./auto.sh: line 7: ./yt.pl http://www.youtube.com/watch?v=0BY5V56ZW3w&feature=relmfu: No such file or directory 
./auto.sh: line 7: ./yt.pl http://www.youtube.com/watch?v=9CO__3nHsg8: No such file or directory 
./auto.sh: line 7: ./yt.pl http://www.youtube.com/watch?v=bzgZlV3LzFA&feature=fvst: No such file or directory 
./auto.sh: line 7: ./yt.pl http://www.youtube.com/watch?v=FgS1UQvYtcU&feature=fvst: No such file or directory 

回答

2

試着這樣做:

#!/bin/bash 

while read link; do 
    ./yt.pl "$link" && sleep 3 
done < download.txt 
+4

你應該解釋一下......問題是間距和'引號「YT .pl「$ link」被視爲單個(不可表達)文件。解決的辦法是將'yt.pl'從''$ link''分開。使用'read'命令讀取一行最好比使用'sed'重複分割一個文件更好。 –