linux中的for循环有很多用处:
比如跑历史数据,参数为日期,那么我们可以把日期放入for循环中,循环把日期作为参数执行
下面看一个我生产中用到的例子
[zhangshk@fonova-app02 ~]$ cat nohup_run0_100.sh
for i in {0..100}
do
sh /data/zhangshk/Memory_Statistics-0.0.0.1-SNAPSHOT/bin/Memory_Statistics "`date -d'-'$i' day' "+%Y%m%d00"`"
sleep 1s
done
这里面有for循环、有日期data的处理,对于data不熟悉的可以看看我的之前的一个帖子,至少可以对data有个大概的使用常识。
http://blog.youkuaiyun.com/zhangshk_/article/details/78787434
解释一下这个例子,首先for循环i 为0-10 ,然后$i拿这个变量 构造指定的日期,然后后台执行这个脚本。
nohup ... &表示后台执行
[zhangshk@fonova-app02 ~]$ nohup sh nohup_run0_100.sh &
for循环的格式有几种:
for i in arg1 arg2 arg3
for i in{1..10}
for((i=1;i<=10;i++))执行体用
do
execute command
done 包裹
下面我们将几个for循环的demo
demo1:遍历参数
[root@dev-02 software]# cat test.sh
#!/bin/bash
for i in a b c
do
echo $i
done
[root@dev-02 software]# sh test.sh
a
b
c
demo2:sum求和
[root@dev-02 software]# cat sum.sh
#!/bin/bash
for i in {0..10}
do
sum=$((sum+i))
done
echo $sum
[root@dev-02 software]# sh sum.sh
55
另一种写法,这种类似java中的for循环
[root@dev-02 software]# cat sum.sh
#!/bin/bash
for((i=1;i<=10;i++))
do
sum=$((sum+i))
done
echo $sum
[root@dev-02 software]# sh sum.sh
55
demo3: 双重for循环打印99乘法表
提示:这里有一个-e 表示开启转义字符,\c表示不换行 \n换行
[root@dev-02 software]# cat 99.sh
#!/bin/bash
for((i=1;i<10;i++))
do
for((j=1;j<=i;j++))
do
echo -e $i*$j =$((i*j))' \c'
done
echo -e '\n'
done
[root@dev-02 software]# sh 99.sh
1*1 =1
2*1 =2 2*2 =4
3*1 =3 3*2 =6 3*3 =9
4*1 =4 4*2 =8 4*3 =12 4*4 =16
5*1 =5 5*2 =10 5*3 =15 5*4 =20 5*5 =25
6*1 =6 6*2 =12 6*3 =18 6*4 =24 6*5 =30 6*6 =36
7*1 =7 7*2 =14 7*3 =21 7*4 =28 7*5 =35 7*6 =42 7*7 =49
8*1 =8 8*2 =16 8*3 =24 8*4 =32 8*5 =40 8*6 =48 8*7 =56 8*8 =64
9*1 =9 9*2 =18 9*3 =27 9*4 =36 9*5 =45 9*6 =54 9*7 =63 9*8 =72 9*9 =81