cshell-语法教学内容

上传人:go****e 文档编号:137373867 上传时间:2020-07-07 格式:DOC 页数:9 大小:26.50KB
返回 下载 相关 举报
cshell-语法教学内容_第1页
第1页 / 共9页
cshell-语法教学内容_第2页
第2页 / 共9页
cshell-语法教学内容_第3页
第3页 / 共9页
cshell-语法教学内容_第4页
第4页 / 共9页
cshell-语法教学内容_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《cshell-语法教学内容》由会员分享,可在线阅读,更多相关《cshell-语法教学内容(9页珍藏版)》请在金锄头文库上搜索。

1、cshell-语法精品文档CShell 简单语法CShell头部声明当你执行一个shell script时, 系统会检查script文件的第一行以确定如何执行其中的命令: 如果第一行以#!开始, 后面跟着一个程序名, 系统就会用那个程序来执行script中后面的命令. 如果第一行以#开始, 系统会用Cshell执行script.等同于#!/bin/csh 如果第一行不是以#开始, 系统就会用Bshell来执行script.等同于#!/bin/sh1. 建议您使用明确的写法,即用#!/bin/csh(sh)2. 如果你想快速执行Cshell, 即不想读入Cshell的启动程序(.cshrc等),

2、 在script文件的第一行应该用类似下面的格式: #!/bin/csh -f scriptSCRIPT中的参数及变量如何将命令行的参数传给script呢? 可以这样: 键入script名, 后面跟任何你想要传递的参数. Cshell把script名后面的字符按照词(words)来划分后传递给一个叫做 argv的变量数组, 叫做arguments list. 这样命令行的参数就作为words存储于argv 中, 连同script名, 分别可以被引用为argv0, argv1, . argvn, 或者你也可以用等效的方法即$0,$1,.,$n来引用它们,其中n是参数的个数. 除了argv, $0

3、, $1, . $n, 等以外, 你还可以在script中使用其他变量. 有许多符号可以对变量进行操作: 读取, 赋值, 判断属性等等. 分述如下: $?name 判断变量是否存在, 若存在(被set过)则等于 1 . 否则等于 0 . 例如: % set var=abc % echo $?var #结果为 1 % unset var% echo $?var #结果为 0 $#name 计算变量name中的词(words)数. 例如: % set var=(a b c) # $#var = 3 % set var=abc # $#var = 1 % unset var # var: Undef

4、ined variable. $ $是Cshell的特殊变量, 用于表示执行此script时的进程号. 因为进程号是唯一的, 你可以用$来生成一个唯一的临时文件,比如tmp.$. 它可以避免任何文件名的冲突. 当然你也可以开发你自己对$的独特应用. $ 重定向符号. 即从终端读入(一行). 比如: echo -n yes or no? set a=($ $#var) 时, $varn-不给任何结果和错误信息. 而$varm-n给出$varm到$var$#var的words. 如果(m $#var) 则没有任何结果. 文件操作格式: -操作符 filename -e 文件存在返回1(.true.

5、), 否则返回0(.false.). -r 文件可读返回1,否则返回0. -w .可写. -x .可执行. -o 文件属于用户本人返回1, 否则返回0. -z 文件长度为0返回1, 否则返回0. -f 文件为普通(plain)文件返回1, 否则返回0. -d 文件为目录文件时返回1, 否则返回0. 路径名操作: 你可以对路径名进行操作, 以便于去掉你不需要的部分.:t (tail)只保留路径名最右边的部分, 而将前面的全部去掉. (相当于basename):r (root)去掉从.(dot)开始的后缀部分.:e (end)去掉从左边开始一直的.的前缀部分.:h (head)去掉最后的一部分,

6、只保留文件所在的目录名.比如, 你有一个叫做 /usr/people/user1/file1.txt的文件,在script中将它赋值给变量var_file, 则:$var_file:t = file1.txt$var_file:r = /usr/people/user1/file1$var_file:e = txt$var_file:h = /usr/people/user1返回代码:严谨的程序应该测试返回代码以判断该程序是正常结束还是别的情况. 尤其在你写前后相关的script的时候, 后面的命令要用到前面命令的执行结果的时候. 一个命令执行后的返回代码存放在叫做status的变量中, 当命

7、令执行成功正常退出时 status为0, 否则为1. 比如你想检查前面一个命令是否正常地被执行了, 从而判断下一个命令是否应该执行, 就可以: command1set checkpoint=$statuscommands.if(! $checkpoint) then command2else command3endif控制结构:Cshell中基本的控制结构包括 foreach, if结构, 另外还有switch及while, 当然还有那个从程序设计概念提出来开始就一直存在的幽灵: goto. 控制循环的foreach语法为:foreach variable (variable_value li

8、sts) commandsend变量variable依次取lists中的值, 执行command(s)命令. lists中给出多少个值, 就进行多少次操作. 结束循环后变量variable的取值为lists中的最后一项. foreach-end中间可以用 break 以及 continue 控制循环的中断及继续: break终止 循环, continue 终止一轮循环操作并开始下一轮循环. noglob变量的设置可以防止lists中的值作文件名扩展. 在script的前面set即可. set noglob 比如你的lists是 (a b c*), set noglob的结果是直接解释成a, b

9、, c*; 而没有 设置noglob时则解释成a, b, 以c开始的文件名. 如果你的目录下没有这样的 文件时, 就会报错(No match). 当然你应该在script的结束时unset noglob, 以 不影响后面的操作. 条件控制 if语法为:if ( expression ) then commandselse commandsendif另外还可以用else if:if ( expression ) then commandselse if ( expression ) then commandselse commandsendif还可以用简化格式:if ( expression )

10、 command或者if ( expression ) command# (backslash)后面只能接newline(回车即可), 不能有任何其他字符;# 单个命令command不能包括|, & 以及;. 也不能使用其它控制语句.不能使用下面的格式:if ( expression )then或者if ( expression ) then command endif循环控制 while语法为:while ( expression ) commandsend# while中也可以使用break以终止循环.例程(本例执行10次循环):#!/bin/cshset ai=1while ( $ai

11、= 10 ) echo the $aith time running. ai+end开关控制 switch语法为:switch ( $word )case str_1: commands breaksw.case str_n: commands breakswdefault: commands breakswendsw# word为控制变量, breaksw 跳出 switch 操作.goto语法为:goto label例如(此例为无限循环!):loop: commands goto loop其它: 中断处理 如果你的script还没有运行结束, 又不想继续运行, 你可能要按下C以终止执行它,

12、 又或者你的script设计成那种无限循环式的, 即允许使用者重复执行直到按下C(比如查询程序). 按下C后, 系统会终止整个script, 但是如果你不想这样做(比如你还想删除中间的某些临时文件), 就可以在script中设定中断处理: onintr label label是标识行, 其结果是你按了C后, goto到label行继续执行. exit 前面讲过命令有返回代码, 同样script也可以有返回代码. 用exit可以终止script 的执行并返回一个值: exit ( status ) status 即是你要返回的值. expression(表达式) if和while都要用到expression, expression可以是变量值以及他们的操作结果, 或者是任何返回数值的操作. 比如 ( $var ), ( -e filename )等等. C 中的所有代数及逻辑运算符都可以用于Cshell的expression中. 比如 = 和 != 比较两个字符是否相同, & 和 | 表示逻辑 与 和 或, ! 表示 非. 代数运算使用expr, 如 expr $a + $b 收集于网络,如有侵权请联系管理员删除

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 幼儿/小学教育 > 其它小学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号