Shell Scriptfor循环结构语句
一、Shell FOR循环语句概述
属于shell的符合语句
可以看出帮助信息给出了两种语法
[root@localhost ~]# help for
for: for NAME [in WORDS ... ] ; do COMMANDS; doneExecute commands for each member in a list.The `for' loop executes a sequence of commands for each member in alist of items. If `in WORDS ...;' is not present, then `in "$@"' isassumed. For each element in WORDS, NAME is set to that element, andthe COMMANDS are executed.Exit Status:Returns the status of the last command executed.
for ((: for (( exp1; exp2; exp3 )); do COMMANDS; doneArithmetic for loop.Equivalent to(( EXP1 ))while (( EXP2 )); doCOMMANDS(( EXP3 ))doneEXP1, EXP2, and EXP3 are arithmetic expressions. If any expression isomitted, it behaves as if it evaluates to 1.Exit Status:Returns the status of the last command executed.
语法:
for NAME [in WORDS … ] ; do COMMANDS; done
循环遍历WORDS中的元素,每次将元素赋值给NAME–
NAME:变量
WORDS:被扩展后得到的一个集合/列表
for (( exp1; exp2; exp3 )); do COMMANDS; done
跟据(())种给定的三个算术表达计算循环
exp1:用于循环判断的变量初始值
exp2:循环判断的结束值
exp3:循环控制的步进值
二、Shell FOR循环语句简单实现
对语法:for NAME [in WORDS … ] ; do COMMANDS; done的简单实现:
i:变量
“a” “b” “c”:一个集合或序列
[root@localhost ~]# for i in "a" "b" "c"; do echo "$i"; done
a
b
c
使用扩展的方式得到一个集合/序列:
可以看到在例子中,集合的位置使用了命令替换
该例子的执行顺序是:
先做命令替换,将命令:ls / 的执行结果扩展到命令的位置
再执行for语句迭代命令替换的结果
[root@localhost ~]# for i in `ls /`; do echo $i;done
bin
boot
data
dev
dump.rdb
etc
home
lib
lib64
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var
Seq命令获取一个列表用于for循环的迭代方式:
seq命令的语法:seq 起始值 步进值 结束值
[root@localhost ~]# for i in `seq 1 3 9`; do echo "$i"; done
1
4
7
对语法:for (( exp1; exp2; exp3 )); do COMMANDS; done的简单实现:
[root@localhost ~]# for ((i=0;i<5;i++)); do echo $i; done
0
1
2
3
4