首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建多个变量并将它们传递给脚本

创建多个变量并将它们传递给脚本
EN

Stack Overflow用户
提问于 2013-01-29 14:31:53
回答 1查看 278关注 0票数 0

希望你能帮我解决这个问题,我是相当新的打击,所以我搜索和找到了很多例子,我的工作,但我有点困在这里。

我有两个剧本。

脚本1.sh工作得很好:它下载包含标题、艺术家和曲目网址的youtube播放列表的rss提要,下载这些条目并将其存储到playlist.txt中。

问题是,我有其他youtube播放列表,如果我想使用不同的rss提要页面,我需要手动更改script1.sh中播放列表的url。

因此,我正在编写script2.sh,它将下载带有所有不同播放列表的rss提要的url,然后将它们一个接一个地发送到script1.sh。

播放列表urls是这样的:

http://gdata.youtube.com/feeds/api/playlists/hashtag_playlist?&max-results=50&fields=entry%28title,link%29&prettyprint=true

到目前为止,我已经在script2.sh上成功地在playlists.txt中收集了我的5个播放列表的名称和标签,如下所示:

  • "playlist1“PLYNrAD9Jn2WDWZFp23G3a2tkOBtdeNAbc6
  • "playlist2“PLYNrAD9Jn2WCf54CoS22kn3pBX1XUFinE

我还设法为每个播放列表创建了一个文本文件,并将其命名为播放列表的名称。我现在要做的是把一个又一个的标签发送到script1.sh,并让它在每个适当的文件中输出每个播放列表的urls、标题和艺术家。我需要在playlists.txt中使每一行都成为一个变量,并将它们传递到script1.sh的url中,但实际上不知道如何做到这一点。

我希望我能说清楚。我可以回答你的任何问题来澄清我错过的事情。

提前谢谢你

编辑:我刚开始写bash,所以我真的很糟糕,这对你来说一定很难看。(预告:)

script1.sh

代码语言:javascript
复制
url="http://gdata.youtube.com/feeds/api/playlists/PLYNrAD9Jn2WDmpu3gNVxIVO8bAiOcQkx7?&max-results=50&fields=entry%28title,link%29&prettyprint=true"

name="SlickSlickSound"

下载url rss提要页面到utube

代码语言:javascript
复制
wget -O $HOME/Music/"Youtube Playlist"/utube $url 2>&1

将下载页面中的标题提取到temp0中,使用xml-twig工具中的xml_grep

代码语言:javascript
复制
xml_grep 'title' utube --text_only > temp0

将urls提取到temp2

代码语言:javascript
复制
grep -o 'href=['"'"'"][^"'"'"']*&feature=youtube_gdata' utube  > temp

为了清晰起见,将urls剥离到最小值: www.example.com

代码语言:javascript
复制
sed "s/href='http\?:\/\///" temp > temp1
sed "s/&feature=youtube_gdata//" temp1 > temp2

合并相同文件output.txt中的URL和Title临时文件

代码语言:javascript
复制
paste temp2 temp0 > output.txt

script2.sh

代码语言:javascript
复制
url="http://www.youtube.com/user/SterylMreep/videos?flow=grid&view=1"

下载带有所有播放列表信息的页面源

代码语言:javascript
复制
wget -O "$HOME/Music/Youtube Playlist"/Playlists/collection $url 2>&1

摘录播放列表的名称

代码语言:javascript
复制
grep -o 'data-context-item-title=......................' collection > tmp0

为了清晰起见,将urls剥离到最低限度

代码语言:javascript
复制
sed 's/data-context-item-title=//' tmp0 > tmp2
sed 's/" d...*$/"/' tmp2 > tmp3

移除空格和\

代码语言:javascript
复制
sed 's/^[ \t]*//' tmp3 > tmp4
sed 's/\///' tmp4 > tmp5

将播放列表ID提取为tmp

代码语言:javascript
复制
grep -o 'href="/playlist?list=..................................' collection  > tmp

为了清晰起见,将urls剥离到最低限度

代码语言:javascript
复制
sed 's/href="\/playlist?list=//' tmp > tmp1

创建带有播放列表和哈希标签名称的文件

代码语言:javascript
复制
paste tmp4 tmp1 > playlists.txt

创建具有播放列表名称的文件

代码语言:javascript
复制
cat tmp4 | xargs touch

接下来要做的是将playlists.txt中的hashtag传递到script1.sh并获取标题、艺术家和urls

EN

回答 1

Stack Overflow用户

发布于 2013-01-29 14:36:22

代码语言:javascript
复制
while read line
do
  sh script1.sh $line
done < script2.sh
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14585290

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档