我正在使用以下 bash 脚本将各种 gzip 档案合并在一起:
wget -O bluelvl1.gz http://list.iblocklist.com/?list=ydxerpxkpcfqjaybcssw&fileformat=p2p&archiveformat=gz
wget -O bluelvl2.gz http://list.iblocklist.com/?list=gyisgnzbhppbvsphucsw&fileformat=p2p&archiveformat=gz
wget -O badpeer.gz http://list.iblocklist.com/?list=cwworuawihqvocglcoss&fileformat=p2p&archiveformat=gz
wget -O microsoft.gz http://list.iblocklist.com/?list=xshktygkujudfnjfioro&fileformat=p2p&archiveformat=gz
wget -O unallocated.gz http://list.iblocklist.com/?list=gihxqmhyunbxhbmgqrla&fileformat=p2p&archiveformat=gz
cat bluelvl1.gz bluelvl2.gz badpeer.gz microsoft.gz unallocated.gz > blocklist.p2p.gz
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是“cat”命令正在创建没有任何内容的“blocklist.p2p.gz”。我认为问题是由于 Bash 没有等待 wget 完成下载造成的。
我相信这一点,因为如果我一次将每一行复制粘贴到命令提示符中(并亲自等待下载完成),Cat 会按照我的预期创建一个合并的存档。如果我从脚本中复制上面的所有六行,然后将全部内容粘贴到同一个命令提示符中,我会看到脚本遇到的相同问题。
那么有没有办法让 Bash 等待 wget 完成呢?Bash 是否应该在默认情况下等待并且某些原因导致这种情况不会发生?我将不胜感激一个解决方案。
编辑:根据下面的评论,要使用的正确脚本是:
wget -O bluelvl1.gz "http://list.iblocklist.com/?list=ydxerpxkpcfqjaybcssw&fileformat=p2p&archiveformat=gz"
wget -O bluelvl2.gz "http://list.iblocklist.com/?list=gyisgnzbhppbvsphucsw&fileformat=p2p&archiveformat=gz"
wget -O badpeer.gz "http://list.iblocklist.com/?list=cwworuawihqvocglcoss&fileformat=p2p&archiveformat=gz"
wget -O microsoft.gz "http://list.iblocklist.com/?list=xshktygkujudfnjfioro&fileformat=p2p&archiveformat=gz"
wget -O unallocated.gz "http://list.iblocklist.com/?list=gihxqmhyunbxhbmgqrla&fileformat=p2p&archiveformat=gz"
cat bluelvl1.gz bluelvl2.gz badpeer.gz microsoft.gz unallocated.gz > blocklist.p2p.gz
Run Code Online (Sandbox Code Playgroud)
Bash&
将 URL 中的符号视为命令的终止符,并将其作为后台进程执行。如果您在 bash 中输入任何命令并将 a 附加&
到它,它将在后台运行它并立即将控制权返回给调用脚本或终端。它们之间的字段作为命令本身执行。
为了防止 bash 以这种方式解释 URL,请将整个内容括在引号中。这将使它作为字符串参数传递整个 URL,并且它将作为前台进程运行。
归档时间: |
|
查看次数: |
11028 次 |
最近记录: |