不是SHELL的SHELL—TCSH SHELL 编程(1)Unix系统 -电脑资料

电脑资料 时间:2019-01-01 我要投稿
【www.unjs.com - 电脑资料】

    TCSH shell不同于其他的shell,因为控制结构更符合程序设计语言的格式.例如TCSH 的test条件的控制结构是表达式,而不是 linux 命令,得到的值是逻辑值true或false,TCSH的表达式与C语言中的表达式基本相同. 一 TCSH shell变量,脚本, 参数用户可以在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不同的控制结构列表:

    条件控制结构; 功能

    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

    循环控制结构: 功能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完全相同.如:

    if ( -r myfile ) then #测试myfile是否可读

    echo info

    endif

    测试表达式的基本操作:

    字符串比较: 功能

    == 是否相等,若相等返回真

    != 是否不等,若不等返回真

    =~ 字符串和模式进行测试是否相等(模式为任意正则表达式)

    !~ 字符串和模式测试是否不等(模式为任意正则表达式)文件测试: 功能

    -e 测试文件是否存在

    -r 测试文件是否可读

    -w 测试文件是否可写

    -x 测试文件是否可执行

    -d 测试文件名是否为目录

    -f 测试文件是否为普通文件

    -o 测试文件是否被用户所拥有

    -z 测试文件是否为空

    逻辑运算符: 功能

    && 与运算,两个条件同时蛮族

    || 或运算,有一个条件满足

    ! 取反

    共5页: 1 [2] [3] [4] [5] 下一页

    原文转自:http://www.ltesting.net

最新文章