Shell脚本中for循环的几个常用写法

for循环:for arg in Range;do CMD;done

  循环常见场景:

  ##1、有限数字(用空格隔开)
  for i in 1 2 3 4 5;do echo $i ;done 
  ##2、序列数据(seq 开始 步长 最后) ---步长默认1
  for i in $(seq 1 3 100); do echo $i ;done
  ##3、命令结果(默认空格为分隔符)
  for i in `cat 01.txt`;do echo $i ;done
  for i in `ls | grep "heh"` ;do echo $i ;done
  ##4、语法循环(类似C,注意为双括号,分号隔开)
  for ((i=1;i<3;i+=2));do echo i ;done
  for ((;;);do echo"无限循环";done

第一类:数字性循环

for1-1.sh

1

2

3

4

5

6

#!/bin/bash

  

for((i=1;i<=10;i++));

do 

echo $(expr $i \* 3 + 1);

done

for1-2.sh

1

2

3

4

5

6

#!/bin/bash

  

for i in $(seq 1 10)

do 

echo $(expr $i \* 3 + 1);

done

for1-3.sh

1

2

3

4

5

6

#!/bin/bash

  

for i in {1..10}

do

echo $(expr $i \* 3 + 1);

done

for1-4.sh

1

2

3

#!/bin/bash

  

awk 'BEGIN{for(i=1; i<=10; i++) print i}'

第二类:字符性循环

for2-1.sh

1

2

3

4

5

6

#!/bin/bash

  

for i in `ls`;

do 

echo $i is file name\! ;

done

for2-2.sh

1

2

3

4

5

6

#!/bin/bash

  

for i in $* ;

do

echo $i is input chart\! ;

done

for2-3.sh

1

2

3

4

5

6

#!/bin/bash

  

for i in f1 f2 f3 ;

do

echo $i is appoint ;

done

for2-4.sh

1

2

3

4

5

6

7

#!/bin/bash

  

list="rootfs usr data data2"

for i in $list;

do

echo $i is appoint ;

done

第三类:路径查找

for3-1.sh

1

2

3

4

5

6

#!/bin/bash

  

for file in /proc/*;

do

echo $file is file path \! ;

done

for3-2.sh

1

2

3

4

5

6

#!/bin/bash

  

for file in $(ls *.sh)

do

echo $file is file path \! ;

done

你可能感兴趣的:(shell)