for、while循环

1.for循环

语法:for 变量名 in 列表;do

             循环体
done

例子1

例子2

例子3 批量修改后缀脚本文件名

2.while循环

在写while循环的时候,发现了一个问题,在while循环内部对变量赋值、定义变量、数组定义等等环境,在循环外面失效。

一个简单的测试脚本如下:

#!/bin/bash
echo "abc xyz" | while read line
do
    new_var=$line
done
echo new_var is null: $new_var?

执行结果证明,$new_var的结果是空值。

问题出在管道上。先看看下面的内容。

while循环的写法有好几种,它的语法结构为:

while test_cmd_list; do cmd_list; done

但更经常地,while循环更多地用于读取标准输入的内容来实现循环。有以下几种写法:

写法一:使用管道传递内容,这是用的最多、但却最烂的写法

echo "abc xyz" | while read line   

do 

    ...

done

写法二:

while read line

do

    ...

done <<< "abc xyz"

写法三:从文件中读取内容

while read line

do

    ...

done </path/filename

方法四:采用进程替换

while read var

do

    ...

done < <(cmd_list)           

方法五:改变标准输入

exec <filename

while read var

do

    ...

done        

 

posted @ 2019-06-15 15:49  溜溜的小车  阅读(152)  评论(0编辑  收藏  举报