学会Linux Shell循环脚本看这一篇就够了

前言:

循环不管在程序中还是脚本中都需要经常用到,

那么在 linux 中 简单的shell 脚本怎么写循环呢?

在写shell脚本时,经常需要进行循环操作。

这里简单谈一下 常用的  for循环结构 

然后再添加几个不同的例子,以便帮助有需要的朋友。

比如 从1到100的循环方法,循环解压文件, 循环向 Hive 导入数据等等。
再linux 下 for 循环中可以使用 break 和 continue 关键字来跳出循环, 
和java 用法一致

 一、常用for循环结构 

#语法一

for 变量 in 值1 值2 值3..
  do
   程序块儿
  done



#语法二

for 变量 `命令`
  do
   程序块儿
  done




#语法三

for ((初始值; 循环控制; 变量变化))
 do
  程序块儿
 done

二、常见案例

1. 从1到100的  不同 循环方法 :

C语言风格

for ((i=1; i<=100; i++))
do
  echo $i
done

Python风格(in的使用)

for i in {1..100}
do
  echo $i
done

Seq的使用

seq: squeue  是一个序列的缩写,主要用来输出序列化的东西

注意代码中不是单引号。

for i `seq 1 100`
do
  echo $i
done

2 . 输出3次你是猪

#!/bin/bash 
  
for i in 1 2 3 4 5  
 do  
  echo "$i-->$(你是猪)" 
 done

3. 批量解压缩当前文件夹下所有的.tar.gz 文件

#!/bin/bash 
  
for i in `ls ./*.tar.gz`  
  do  
   tar -zxvf $i >/dev/null 
  done

4. 遍历目录 批量将数据导入 Hive 

#!  bin/bash
  yyyy=`ls /NetworkInfoDataS` #定义遍历的目录
  for yy in $yyyy
  do
       MM=`ls /NetworkInfoDataS/${yy}`
       for  mm in $MM
          do

                  DD=`ls /NetworkInfoDataS/${yy}/${mm}`

                  for dd in $DD
                    do
                        hive -e "
use date;
LOAD DATA  LOCAL INPATH '/NetworkInfoDataS/${yy}/${mm}/${dd}/${yy}-${mm}-${dd}.txt' OVERWRITE INTO TABLE networkqualityinfo PARTITION (yyyy='${yy}',mm='${mm}',dd='${dd}');

"
                    done
          done
  done
发布了177 篇原创文章 · 获赞 288 · 访问量 25万+

猜你喜欢

转载自blog.csdn.net/bbvjx1314/article/details/103703203