Linux Shell编程4

Linux Shell编程4
2011-07-19 18:24

For循环for…in…do…done

In后面的变量时迭代变量,每次执行时迭代变量都会选用表达式list中的列出的不同单词。for循环结构与C语言中有所不同,在BASH中for循环的基本结构是:

for var in [list]

do

#code block

done

其中$var是循环控制变量,[list]是var需要遍历的一个集合,do/done对包含了循环体,相当于C语言中的一对大括号。另外如果do和for被写在同一行,必须在do前面加上“;”。如:for $var in [list]; do

例1:

#!/bin/bash

fordayin Sun Mon Tue Wed Thu Fri Sat

do

echo $day

done

例2:如果列表被包含在一对双引号中,则被认为是一个元素

#!/bin/bash

fordayin "Sun Mon Tue Wed Thu Fri Sat“

do

echo $day

done

例3:

#!/bin/bash

for FILE in $*

do

if[ -e $FILE ]

then

chmod 600 $FILE

else

echo “The file $FILE does not exist.”

fi

done

产生迭代列表的常用工具

for i in $*
	

脚本的命令行参数

for I in /etc/*.conf
	

与表达式/etc/*.conf相配的文件

for I in $(command)
	

command命令的输出

例4:

#!/bin/bash

forDIR in $*

do

if [ -d $DIR ]

then

if [ “$DIR” == “.” –o “$DIR” == “..” ]

then

echo “skipping directory $DIR”

else

tar czvf $DIR.tgz $DIR && rm –rf $DIR

fi

else

echo “skipping non directory $DIR”

fi

done

while循环while循环的基本结构是:

while [ condition ]

do

#code block

done

until循环的基本结构是:

until [ condition ]

do

#code block

done

while和until的区别在于while是为真时执行,until是为假时执行

Case语句

BASH中的case结构与C语言中的switch语句的功能比较类似,可以用于进行多项分支控制。

case "$var" in

condition1 )

;;

condition2 )

;;

* )

default statments;;

esac

例1:

#!/bin/bash

echo "Hit a key, then hit return."

read Keypress//read内置命令可以从键盘(“标准输入“)读取输入

case "$Keypress" in

[A-Z] ) echo " Uppercase letter";;

[a-z] ) echo " Lowercase letter";;

[0-9] ) echo "Digit";;

* ) echo "Punctuation, whitespace, or other";;

esac


展开阅读全文

没有更多推荐了,返回首页