我对bash脚本编写很新,但我设法写了一个几乎完美的脚本,我为自己感到骄傲。但是,我有这个问题,我不明白为什么它不起作用。 我当前代码的一部分是:
for begin in 1 51
do
echo -e "$begin"
url="http://something&start-index=$begin&something"
wget -O $HOME/Music/YoutubePlaylist/output$begin.txt $url 2>&1
cat output1.txt > output.txt
if ! [[ "$begin" = 1 ]]
then
cat output$begin.txt >> output.txt
fi
done
完美无缺。
但是,如果我在第一行添加101,它就不会起作用。 知道为什么吗?当我查看我的临时文件时它实际上做的是只写出output.txt中output1.txt中的内容而不是其他内容。
PS:output1.txt和output51.txt不为空,而output101.txt为空。也许那是一个提示......
答案 0 :(得分:1)
cat output1.txt > output.txt
每圈都会覆盖output.txt
。
改为执行此操作(仅纠正output.txt
的问题):
rm -f output.txt # if it should start with an empty file
for begin in 1 51
do
echo -e "$begin"
url="http://something&start-index=$begin&something"
wget -O $HOME/Music/YoutubePlaylist/output$begin.txt $url 2>&1
cat output$begin.txt >> output.txt
done
答案 1 :(得分:0)
这样的选择应该可行:
for begin in 1 51 101
do
echo -e "$begin"
...
done
您是否检查过wget -O $HOME/Music/YoutubePlaylist/output$begin.txt $url 2>&1
存在?你能从命令行执行它并检查结果吗?
e.g。
$wget -O $HOME/Music/YoutubePlaylist/output101.txt $url 2>&1
此致