Skip to content

Latest commit

 

History

History
127 lines (111 loc) · 2.28 KB

A04.md

File metadata and controls

127 lines (111 loc) · 2.28 KB

Shell脚本编程

Shell循环语句

Shell支持三种循环语句(Bash Loops),分别是

for循环

for循环语法的格式一般如下:

for var in var_list
do
  command1
  command2
  command3
  ...
  commandN
done

变量列表var_list是一组值(数字,字符串,命令行参数,文件名以及Linux命令输出等)组成的序列,每个值通过空格分割,每循环一次,将列表中的下一个值赋给变量。 注意:in变量列表是可选的,如果不用它,for循环使用命令行的位置参数。下面举两个例子说明。

第一个例子

#!/bin/bash
for var in 1 2 3 4 5
do
  echo "The Value is $var"
done

第二个例子

#!/bin/bash
for FILE in $HOME/.bash*
do
  echo $FILE
done

无线循环语法:

for (( ; ; ))

while循环

while循环用于不断执行一系列命令,也用于从输入文件中读取数据;命令通常为测试条件。其格式为:

while command
do
  statements
done

值得注意的是:

  1. 命令执行完毕,控制返回循环顶部,从头开始直至测试条件为假。
  2. while循环可用于读取键盘信息。举例如下:
#!/bin/bash
#按<Ctrl-D>结束循环
echo "Type <Ctrl-D> to terminate"
echo -n "Enter your name:"
while read NAME
do
  ehco "Your name is $NAME"
done

无限循环语法:

while :
do
  command
done

或者

while true
do
  command
done

Eg: menu.sh

until循环

until循环执行一系列命令直至条件为true时停止,因此until与while循环在处理方式刚好相反。until循环格式为:

until [ condition ]
do
  statements
done

command一般为条件表达式,如果返回值false,则继续执行循环体内的语句,否则跳出循环。

select循环

Select循环的语法为:

select varName in list
do
  statements
done

或者

select varName in list
do
  case $varName in
    pattern1)
      command1;;
    pattern2)
      command2;;
    *)
      echo "Error select option";;
  esac
done

值得注意的是: 1、可以使用环境变量PS3定制select循环的提示符; 2、可以使用if..else.fi或者case..in..esac结构