TCSH shell 编程入门
TCSH shell不同于其他的shell,因为控制结构更符合程序设计语言的格式。例如TCSH 的test条件的控制结构是表达式,而不是linux命令,得到的值是逻辑值true或false,TCSH的表达式与C语言中的表达式基本相同。
第一篇 TCSH shell简介
TCSH shell不同于其他的shell,因为控制结构更符合程序设计语言的格式。例如TCSH 的test条件的控制结构是表达式,而不是linux命令,得到的值是逻辑值true或false,TCSH的表达式与C语言中的表达式基本相同。
一、TCSH shell变量、脚本和参数
用户可以在shell中定义变量,为变量赋值以及引用脚本参数。TCSH使用set,@,setenv定义一变量,也可以用相同的方法定义数值变量和数组,用户通过@命令定义的数值变量来进行算术运算,用户使用圆括号()和方括号[]定义和引用数组。脚本也可以用相同的方法操作,但是有个例外,尽管可以用echo命令输出提示符,但没有read命令处理输入,相反,必须重
定向到一个变量里。
二、脚本输入和脚本输出: $ <
用户能够在脚本范围中定义和使用变量。在下例中,使用文本编辑器把赋值操作和echo之类的linux命令放在一个文件中。然后可以产生可执行文件并像其他命令一样在命令行中执行它,要记住添加可执行权限,必须使用带u+x参数的chmod命令或者带绝对参数700的chmod命令。本中,可以使用echo命令去输出数据,但是,必须通过重定向标准输入把输入读入变量。在TCSH中没有linux read命令的比较版本。记住TCSH全部的脚本文件的第一行的第一个字符必须是“#”字符。
比如:
#
#display "hello"
set string="hello"
echo The value of string is $string
set命令和重定向符号结合$<将用户输入的任何数据读入标准的输入中,下例中,把用户输入读入string变量中。
%set string=$<
abc
%echo $string
abc
能够把提示符放置到相同的行用作echo的输入。TCSH使用一个特殊的选项-n,将消除输出字符串中的回车符.光标将保留在输出字符串的结尾处。
%echo -n please enter a string
%cat hello
#
echo -n "please enter a string:"
set string=$<
echo "the value of string is $string"
%chmod u+x hello
%hello
please enter a string:hello
the value of string is hello
%
三、操作符
TCSH有一系列标准的赋值,算术和关系运算以及重定向和后台操作等函数。
赋值运算符 功能说明
= 赋值操作
+= 先加再赋值
-= 先减再赋值
*= 先乘再赋值
/= 先除再赋值
%= 取余再赋值
++ 自增量1
-- 自减量1
算术运算符 说明
- 负号
+ 加法
- 减法
* 乘法
/ 除法
% 取余
关系运算符 说明
> 大于
< 小于
>= 大于等于
<= 小于等于
!= 不等于
== 等于
重定向和管道符
TCSH支持标准输入和标准输出的重定向和管道操作.如果设置了noclobber特征,要用重定向操作重写当前文件,需要用符号>!代替>
四、控制结构
同其他shell一样,TCSH也有一系列的控制结构控制脚本的命令的执行。while和if控制结构是最常用的控制结构,switch和foreach是更专用的控制结构。switch是if条件的限定形式,检查数值是否等于一系列可能的数值中的一个数值。foreach是循环结构的限定形式.浏览数值列表,给变量赋新的数值。
TCSH不同的控制结构列表:
1、条件控制结构;功能
if (expression) then 注:如果expression为真,则执行commands
commands
endif
if (expression) then 注:如果expression为真,则执行command1,否则执行
command1 command2.
else
command2
endif
switch (string) 加注:允许在几条替换命令中选择,string为不同的模式
case pattern:
commands
breadsw
default:
commands
endsw
2、循环控制结构: 功能
while (expression) 只要expression为真,则重复执行commands,
commands 直到expression为假时跳出循环
end
foreach variable (argument-list)迭代循环获得和argument-list中一样多的参数commands (每次循环variable被设置为列表的下一个参数;end 操作方式同BSH)
TCSH中的控制结构有别于其他的shell,因为它更接近编程语言(C).TCSH的条件表达式的值为true/false.BASH和TCSH主要区别在于TCSH的结构不可重定向或进行管道输出.
五、测试表达式;()
if和while控制结构把表达式用作测试.表达式测试的结果为非零(1)表示真,而零(0)表示假(跟BASH相反).测试表达式可由算术/字符串比较,但是字符串只能作相等和不相等的比较.而且表达式必须要在()括号内.
如:
if (expression) then
command
endif
TCSH有一系列的运算符来分别对字符串进行测试比较.正则表达式可以包含shell脚本的指令的字符串;
如:
if ( $var =~[Hh]* ) then #如果变量$var以字母是大写/小写Hh开头,的字符串
echo information #执行命令
endif #结束
有很多测试文件的操作与BASH完全相同;如:
linux循环执行命令脚本if ( -r myfile ) then #测试myfile是否可读
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论