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