genesis脚本简单的csh语法讲解.docx
- 文档编号:25328329
- 上传时间:2023-06-07
- 格式:DOCX
- 页数:8
- 大小:16.50KB
genesis脚本简单的csh语法讲解.docx
《genesis脚本简单的csh语法讲解.docx》由会员分享,可在线阅读,更多相关《genesis脚本简单的csh语法讲解.docx(8页珍藏版)》请在冰豆网上搜索。
genesis脚本简单的csh语法讲解
genesis2000脚本简单的csh语法讲解
一、变数
1. 字串变数
这个部分和BourneShell的变数一样,只不过在设定变数值时不能使用Bourne
Shell的方式,而必须打:
setvar=value
2. 数字运算
基本上CShell 没有数字变数,但CShell 却有简单的方法处理数字运算:
@varoperatorexpression
operator可以是C 语言中的=,+=,-=,……,而expression则是运算式。
运
算式的运算子如下:
A.() 改变计算的顺序
~@
B.~ 位元NOT运算
@~~
!
逻辑否定
C.
% 取馀数
/ 除
* 乘
- 减
+ 加
D.
>> 右移
<< 左移
E.
> 大於
< 小於
>= 大於等於
<= 小於等於
!
= 不等於
== 等於
F.
& 位元AND运算
^ 位元XOR运算
| 位元OR 运算
G.
&& 逻辑AND
|| 逻辑OR
除此之外,我们也可以检验一个档案的状态,如下
-nfilename
而-n可为下列之一
-d 档案是一个目录档案
-e 档案存在
-f 档案为一般的档案
-o 使用者拥有这个档案
-r 使用者可以读取这个档案
-w 使用者可以写入这个档案
-x 使用者可以执行这个档案
-z 档案长度为0
@count=count+1
@flag=-e/users/cc/mgtsai/mail&&-e/usr/spool/mail
3. 阵列
在CShell 中,我们可以宣告阵列变数,方式如下
setvar=(val1val2……)
而var[1]之值为val1,var[2]之值为val2……。
而$var代表整个阵列。
我们
可以用$#var 来计算阵列个数,也可以用$?
var 来检查某个变数是否已宣告。
4. 特殊变数
$argv 和BourneShell的$*相似,只不过这是一个阵列。
$argv[n] 和BourneShell的$n相同,但不受个数限制。
$#argv 和BourneShell的$#相同
$home 和BourneShell的$HOME相同
$path 和BourneShell的$PATH相似,只不过这是一个阵列
$prompt 和BourneShell的$PS1相同
$shellShell的路径名称
$status 和BourneShell的$?
相同
$$ 和BourneShell的$$相同
$< 键盘输入
二、执行命令
基本上和BourneShell相同,只有一点在BourneShell中的”.” 命令在CShell 中
则为”source”命令。
三、流程控制
在CShell 中流程控制不像BourneShell中一般需要使用test命令。
相反地,它和
C 语言类似只要在条件中写出运□式即可。
当运算结果不为零时,其值为真,为零
时其值为伪。
以下是CShell的流程控制
1.if
语法如下
if(expression)simple-command
2.goto
语法如下
gotolabel
这时程式会跳至以l”label:
”开头的那一行执行
if($#argv==2)gotogoodargs
echo‘Pleaseusetwoarguments.’
exit
goodrags:
…
3.ifthenelse
这和BourneShell的ifthen,ifthenelse,ifthenelif 相似。
语法如下
A.if(expression)then
commands
endif
B.if(expression)then
commands
else
commands
endif
C.if(expression)then
commands
elseif(expression)then
commands
else
commands
endif
4.foreach
这和BourneShell的forin相似。
语法如下
foreachvar(arg-list)
commands
end
5.while
这和BourneShell的while相似。
语法如下
while(expression)
commands
end
6.break及continue
这和BourneShell的break 及continue相似,是用来中断foreach 及while 回
圈。
7.switch
这和BourneShell的case相似。
语法如下
switch(string)
casepat1:
commands1
breaksw
casepat2:
commands2
breaksw
casepat3:
commands3
breaksw
endsw
□附录A expr命令
命令格式
exprexpression
叙述
expression是由字串以及运算子所组成,每个字串或是运算子之间必须用空白隔开
。
下表是运算子的种类及功能,而优先顺序则以先後次序排列,我们可以利用小括
号来改变运算的优先次序。
其运算结果则输出至标准输出上。
:
字串比较。
比较的方式是以两字串的第一个字母开始,而以第二个字串的
字母结束。
如果相同时,则输出第二个字串的字母个数,如果不同时则传
回0 。
* 乘法
/ 除法
% 取馀数
+ 加法
- 减法
< 小於
<= 小於等於
= 等於
!
= 不等於
>= 大於等於
> 大於
&AND运算
|OR运算
当expression中含有”*”,“(”,“)” 等符号时,必须在其前面加上”” ,以免被
Shell 解释成其它意义。
expr2*(3+4) 其输出为14
□附录B test命令
命令格式
testexpression
叙述
expression中包含一个以上的判断准则以作为test评诂的标准。
两准则间用”-a”代
表逻辑AND 运算,”-o”代表逻辑OR运算,而在准则前放置一”!
” 代表NOT 运算。
如
果没有括号,则优先权则为”!
”>“-a”>“-o” 。
和expr命令相同,相使用左右括
号时,必须在其前面加上”” 。
以下是有关准则的叙述(合叙述时传回真,否则传
回伪):
stringstring不为空白字串
-nstringstring的长度大於0
-zstringstring的长度等於0
string1=string2string1等於string2
string1!
=string2string1不等於string2
int1-gtint2int1大於int2
int1-geint2int1大於等於int2
int1-eqint2int1等於int2
int1-neint2int1不等於int2
int1-leint2int1小於等於int2
int1-ltint2int1小於int2
-rfilename 档案可读取
-wfilename 档案可写入
-xfilename 档案可执行
-ffilename 档案为一般档
-dfilename 档案为目录
-sfilename 档案为非空的一般档
test-r“$filename”-a-s“$filename”
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- genesis 脚本 简单 csh 语法 讲解