快捷搜索:   nginx

Linux bash中的循环变量和整数比较

因为要用wget下载一系列文件,需要用循环的方式取文件名,要命的是Bash学的不好,不知道怎么用循环变量表示文件名称,经过漫长努力,终于发现在《高级Bash脚本编程指南》的中有现成的例子,一直没注意看。真是踏破铁鞋无觅处,得来全不费工夫。

例子 10-12. 一个C风格的for循环
   1 #!/bin/bash
   2 # 两种循环到10的方法.
   3
   4 echo
   5
   6 # 标准语法.
   7 for a in 1 2 3 4 5 6 7 8 9 10
   8 do
   9   echo -n "$a "
10 done
11
12 echo; echo
13
14 # +==========================================+
15
16 # 现在, 让我们用C风格的语法做同样的事.
17
18 LIMIT=10
19
20 for ((a=1; a <= LIMIT ; a++)) # 双圆括号, 并且"LIMIT"变量前边没有 "$".
21 do
22   echo -n "$a "
23 done                           # 这是一个借用'ksh93'的结构.
24
25 echo; echo
26
27 # +=========================================================================+
28
29 # 让我们使用C的逗号操作符,来同时增加两个变量的值.
30
31 for ((a=1, b=1; a <= LIMIT ; a++, b++)) # 逗号将同时进行2条操作.
32 do
33   echo -n "$a-$b "
34 done
35
36 echo; echo
37
38 exit 0

另外整数的比较可以用 (("$a" < "$b")) 代替 [ "$a" -lt "$b" ] 的方式,可读性更好些。

我的Bash
#! /bin/bash
NUMBERS=30
for ((number=1;number<=NUMBERS;number++))
do
if (($number < 10))
then
    wget http://.../Ubuntu/Ubuntu0${number}.jpg
else
    wget http://.../Ubuntu/Ubuntu${number}.jpg
fi
done

不过很遗憾的是,上面的脚本对那个网站不起作用,可能和cookie等有关,必要时再看看wget的用法。

顶(0)
踩(0)

您可能还会对下面的文章感兴趣:

最新评论