shell语法.doc
上传人:sy****28 上传时间:2024-09-14 格式:DOC 页数:8 大小:21KB 金币:18 举报 版权申诉
预览加载中,请您耐心等待几秒...

shell语法.doc

shell语法.doc

预览

在线预览结束,喜欢就下载吧,查找使用更方便

18 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

shell语法1.开始#/bin/sh2.包含文件./file一、if条件语句格式:if条件表达式then#当条件为真时执行以下语句命令列表else#为假时执行以下语句命令列表fiif语句也可以嵌套使用if条件表达式1thenif条件表达式2then命令列表elseif条件表达式3then命令列表else命令列表fifielse命令列表fi你可以进行多层嵌套一个if语句一定要跟一个fi表示该层条件结束否则会造成语法错误结合前面讲的举例如下:这里先讲一个条件语句中用到的命令test表示测试test后面的条件是否为真iftest-f"$1"thenlpr$1elseiftest-d"$1"thencd$1lpr$1elseecho"$1不是文件或目录"fifi以上的例子还可以改成如下所示iftest-f"$1"thenlpr$1eliftest-d"$1"#elif同elseifthen(cd$1;lpr$1)elseecho"$1不是文件或目录"fi??????以上的例子不知您是否看懂是什么意思吗?假如我们现在将这个例子保存为prfilechmod+xprfile执行刚才的程序./prfileaaa这个例子是检查你的输入的参数是否是一个文件如果是就打印如果是一个目录先转目录再打印如果即不是文件也不是目录给出提示二、多重条件测试语句case格式:case字串in模式)命令列表;;模式)命令列表;;....esac多重条件语句是以case开始以esac结束中间可以有多个条件列表功能是测试字串和和里面的模式有没有匹配的,有就执行里面的命令列表模式也可以是*号表示任意字串,每个模式里面的最后要心;;双引号结束,否则会发生语法错误。现举例如下:case$1in*.c)cc$1;;*.txt)lpr$1;;*)echo"未知的类型"esac假如将以上内容保存在文件abc中chmod+xabc执行./abca.c将会对文件a.c进行编译执行./abcreadme.txt将会把文件通过打印机假如我将以上内容改一下,你是否会知道它的执行结果?case$1in*)cc$1;;*.txt)lpr$1;;*.c)echo"未知的类型"esac一.while循环while命令格式while条件表do命令表done执行过程Shell首先执行条件表,如果条件表的最后一条语句的退出状态为零,则执行盾环体内的命令表,执行完后,再检查条件表,如果退出状态为零将继续执行,如此循环往复直到条件表的最后一条语句的退出状态非零.退出状态为零就是条件为真True.举例说明假如shell文件的内容如下:Sum=0i=0whiletrue#true是系统的关键词表示真doi=`expr$i+1`Sum=`expr$Sum+$i`if[$i="100"]thenbreak;fidoneecho$i$Sum最后这个程序显示的是1005050这个程序的运算就是将1到100加起来下面将这个程序再改动一下Sum=0i=0while[$i!="100"]doi=`expr$i+1`Sum=`expr$Sum+$i`doneecho$i$Sum改动后的程序运算结果和上面是一样但程序比上面的要简练在这个循环中还可以以until做为测试条件它正好与while测试的条件相反,也就是当条偈苯绦葱醒诽迥诘挠锞?否则就退出循环体,下面还用这个例子.Sum=0i=0until[$i="100"]doi=`expr$i+1`Sum=`expr$Sum+$i`doneecho$i$Sum当i不等于100时循环就是当条件为假时循环,否则就退出,而第一个例子是当i不等于100时循环,也就是测试条件为真时循环.二.for循环命令格式:for变量in名字列表do命令列表done这里的名字列表是一个由空格分隔的字符串列表