您的位置:首页 > 运维架构 > Shell

shell的控制流程语句

2011-06-27 10:11 459 查看
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前者大于等于后者(≥)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: