0

我对 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 添加到第一行,它将不起作用。知道为什么吗?当我查看我的临时文件时,它实际上所做的只是将 output1.txt 中的内容写入 output.txt 中,而没有其他内容。

PS: output1.txt 和 output51.txt 不为空,而 output101.txt 为空。也许这是一个暗示......

4

2 回答 2

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
于 2013-02-19T12:37:21.717 回答
0

这样的选项应该可以正常工作:

for begin in 1 51 101
do
 echo -e "$begin"
 ...
done

你检查是否wget -O $HOME/Music/YoutubePlaylist/output$begin.txt $url 2>&1 存在?你能从命令行执行它并检查结果吗?例如

$wget -O $HOME/Music/YoutubePlaylist/output101.txt $url 2>&1

问候

于 2013-02-19T10:35:14.260 回答