以下内容都是网上知识,只用于个人复习。

一、数字循环
例子:1到10依次循环赋值给i,然后i*3再加1。
-----------------------------

#!/bin/bash  
for((i=1;i<=10;i++));  
do   
    echo $(expr $i \* 3 + 1);  
done

-----------------------------

#!/bin/bash  
for i in $(seq 1 10)  
do   
   echo $(expr $i \* 3 + 1);  
done

-----------------------------

#!/bin/bash  
for i in {1..10}  
do  
    echo $(expr $i \* 3 + 1);  
done

运行结果:

4
7
10
13
16
19
22
25
28
31


例子:循环循环1-10
-----------------------------

#!/bin/bash  
awk 'BEGIN{for(i=1; i<=10; i++) print i}'



二、字符性循环
例子:将执行命令的结果循环
-----------------------------

#!/bin/bash
for i in `ls -l | grep -v "^d" |awk -F" " '{print $NF}' | sed 1d`;
do 
    echo $i is file name\! ;
done


例子:将传递给脚本或函数的所有参数循环
-----------------------------

#!/bin/bash 
for i in $* ;
do
    echo $i is input chart\! ;
done


例子:将f1和f2和f3依次循环
-----------------------------

#!/bin/bash
for i in f1 f2 f3 ;
do
    echo $i is appoint ;
done


例子:使用变量方式循环
-----------------------------

#!/bin/bash
list="rootfs usr data data2"
for i in $list;
do
    echo $i is appoint ;
done



三、路径查找
-----------------------------

#!/bin/bash
for file in /proc/*;
do
    echo $file is file path \! ;
done

-----------------------------

for3-2.sh
#!/bin/bash
for file in $(ls *.sh)
do
    echo $file is file path \! ;
done



四、遍历文件夹和文件

#!/bin/bash
function getdir(){
    for element in `ls $1`
    do  
        dir_or_file=$1"/"$element
        if [ -d $dir_or_file ]
        then 
            getdir $dir_or_file
        else
            echo $dir_or_file
        fi  
    done
}
root_dir="/home/test"
getdir $root_dir

#以下命令均不包含".",".."目录,以及"."开头的隐藏文件,如需包含,ll 需要加上 -a参数
#当前目录下文件个数,不包含子目录
ll |grep "^-"|wc -l
#当前目录下目录个数,不包含子目录
ll |grep "^d"|wc -l
#当前目录下文件个数,包含子目录
ll -R|grep "^-"|wc -l
#当前目录下目录个数,包含子目录
ll -R|grep "^d"|wc -l


五、逐行读取文件里面每一行内容(如果要对比这几种方法的速度,可以把他们都写成函数,然后调用函数的是加time命令)
1、while循环中执行效率最高,最常用的方法。

while read LINE
do
    echo $LINE
done  < $FILENAME


2、重定向法;

cat $FILENAME | while read LINE
do
    echo $LINE
done


3、for循环方法(最快):

for i in `cat $FILENAME`
do
    echo $i
done


4、文件描述符法:

exec 3<&0
exec 0<$FILENAME
while read LINE
do
    echo $LINE
exec 0<&<3