2013-02-19 76 views
0

我对bash脚本编程颇为陌生,但我设法编写了一个几乎完美运行的脚本,我为自己感到非常自豪。但是,我有这个问题,我不明白为什么它不工作。我目前的代码 部分是这样的: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为空。也许多数民众赞成的提示....

+1

请加上 “set -x” 在shell脚本之前for语句。这是调试Shell脚本的方法 – user1428716 2013-02-19 01:13:31

+0

您是否为“101”情况手动尝试了'wget' URL? – Anew 2013-02-19 05:28:02

回答

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 

问候

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