shell中的循环结构

shell中的循环结构有:for,while和until(while和until的语法结构、设计思路基本一致,因此归为一类讨论)


for

for循环有两种形态:

1.列表形态,形如:

for var in varlist; do
  command 1
  ...
  command n
done

其思路是:用var依次读取varlist中的各元素,因此循环次数取决于varlist的长度

这里的varlist可以直接写出来,也可以是变量替换${ }或命令行替换$( )(想想command处理流程中对meta的重组)

若缺省in varlist,则其值将从$*(或$@)中获得

直接写varlist的例子如下:

for var in aa bb cc dd ee ff; do
  echo "now is ${var}"
done

2.循环计数形态,形如:

for (( i=1; i<=100; i++ )); do
  command 1
  ...
  command n
done
循环技术形态的设计思路和C语言很相似

这里利用到了(( ))的数值测试条件功能和变量值自增减功能(详见《${ },$( )和$(( ))》、《shell中的测试条件》)


while

1.while循环利用“测试条件”控制循环,其结构为

while [ ... ]; do
  command 1
  ...
  command n
done

2.until相当于对while取反,其表示:循环一直运行,“直到"测试条件成立才终止


break和continue

1.shell中的break和continue比C语言更灵活,因为二者可以指定目标循环层,举例说明

for ...; do  #记为loop A
  for ...; do  #记为loop B
    break  #只退出loop B,但仍在loop A中(break的默认参数为1,1代表当前循环层)
  done
done
for ...; do  #记为loop A
  for ...; do  #记为loop B
    break 2  #直接退出loop A
  done
done
break和continue的缺省参数为1, 参数n表示从里向外数的第n层循环


你可能感兴趣的:(Shell)