shell的控制流程语句

shell分为两大类:

Bourne shell (包括 sh, ksh, bash):Bourne shell ( sh),Korn shell ( ksh),Bourne Again shell ( bash),POSIX shell ( sh)。

 

C shell (包括 csh and tcsh):C shell ( csh),TENEX/TOPS C shell ( tcsh)。

shell调试:常用echo打印变量值;真实的调试模式-sh -x shellscript.sh,执行脚本并打印所有变量的值;只检查语法的调试模式-sh -n script.sh,返回语法错误。

流程控制语法如下:

#if语句
if...;then
...
elif..;then
...
else
...
fi
#case语句
case...in
..) something;;
esac
#select语句,与用户进行交互
select var in...;do
...
...$var can be used...
done
...$var can be used...
#while循环
while [ 条件1 ]
do
...
done
#until
until [ 条件 ]
do
done
#for循环
for (( 条件1; 条件2; 条件3 ))
do
done
for var in...
do
...
done


注意的是:select是bash的一个扩展应用,所以头语句应该为“#!/bin/bash”,否则select无法使用。select的效果是列出变量,等待用户选择。

补:与用户进行交互,除了select,还有read命令,用法“read var”,获得用户的输入并赋值给变量var。

if/while中的条件判断通常使用“[]”来进行条件测试

[ -f "xx" ]:判断是否为一个文件

[ -x "xx" ]:判断是否可执行

[ -n "$var"]:判断var是否有值

[ "$a"="$b"]:判断变量a和b是否相等

其他有对文件的测试还有:

-d目录

-s文件非空

 
-f正规文件
-w可写
-L符号链接
-u文件有suid设置
-r可读
-x可执行

 对字符串的测试还有: 

!=两个字符串不相同
-z空串

对数值的测试有:
-eq数值相等(=)  -ne 数值不相等(!=)
-gt 前者大于后者 (>)  -lt  前者小于后者(<)
-le 前者小于等于后者 ()-ge前者大于等于后者()

 

posted @ 2011-06-27 10:11  春文秋武  阅读(140)  评论(0编辑  收藏  举报