bash脚本if语句错误

时间:2013-02-19 01:10:28

标签: bash if-statement for-loop

我对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为空。也许那是一个提示......

2 个答案:

答案 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

此致