Shell中的For循环

前言

近期在处理一个临时数据需求时,由于会用到埋点表的近一年的分区,一次性全量查询会产生18W+的mapper数,效率慢不说,而且影响集群的性能,故而采用shell的循环方式,把需要使用到的分区值放到一个数组,然后遍历数组中的每一个值,将查询的结果保存至一张分区表。上一篇文章讲了数组的操作,本文介绍For循环的几种语法,仅供参考。

数字型循环

如下是几种实现方式的实例:

#!/bin/bash
#通过 awk
awk 'BEGIN {for i=1;i<=5;i++) print i)'
#通过seq构造数字序列
for i in $(seq 1 5)
do
echo $(($i*2-1));
done
#传统方式1
for(i=1;i<=5;i++);do
{
echo $(($i*6+5));
}
done
#传统方式2
for i in (1..5)
do
echo $(($i));
done

字符型循环

如下是几种实例:

#!/bin/bash
#读取字符数组
strArray="dota2 lol pubg csol"
for i in $strArray;
do
echo $i is a game;
done
#读取shell的外部参数
for i in $*;
do
echo $i is a parameter;
done

读取路径

#读取文件列表
for i in `ls *.sh`;
do
echo $i is a sh file;
done
    原文作者:风筝flying
    原文地址: https://www.jianshu.com/p/f214706426f6
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞