设为首页 收藏本站
查看: 1007|回复: 0

TCSH shell 编程入门

[复制链接]

尚未签到

发表于 2018-8-23 12:07:06 | 显示全部楼层 |阅读模式
TCSH shell 编程入门http://www.linuxsir.org/main/?q=node/139  作者:KornLee
  来自:LinuxSir.Org
  摘要:TCSH shell不同于其他的shell,因为控制结构更符合程序设计语言的格式。例如TCSH 的test条件的控制结构是表达式,而不是linux命令,得到的值是逻辑值true或false,TCSH的表达式与C语言中的表达式基本相同。
  目录
  第一篇 TCSH shell简介
    一、TCSH shell变量、脚本和参数  二、脚本输入和脚本输出: $ <
      三、操作符
      四、控制结构
      1、条件控制结构;功能  2、循环控制结构: 功能
      五、测试表达式;()
      1、字符串比较: 功能  2、逻辑运算符: 功能
      六、TCSH内建命令
      1、数字变量@  2、alias
        3、argv
        4、bg
        5、break
        6、breaksw
        7、builtins
        8、cd
        9、continue
        10、dirs
        11、echo
        12、eval
        13、exec
        14、exit
        15、fg
        16、foreach
        17、history
        18、hup
        19、if-then
        20、if-then-else
        21、jobs
        22、kill
        23、logout
        24、nice
        25、nohup
        26、notify
        27、onintr
        28、popd
        29、printenv
        30、pushd
        31、repeat
        32、set
        33、setenv
        34、shift
        35、source
        36、stop
        37、switch
        38、time
        39、umask
        40、unalias
        41、unset
        42、unsetenv
        43、wait
        44、where
        45、which
        46、while

  第二篇  TCSH配置
    一、TCSH shell 特征               
      1、echo  2、ignoreeof
        3、noclobber
        4、noglob
        5、附录:常用的TCSH shell特征;
      二、TCSH shell 变量
      1、prompt prompt2 prompt3  2、cdpath
        3、history和savehist
        4、mail
        5、附常用的TCSH shell配置变量
      三、TCSH shell初始化文件
      1、 .login  2、 .tcshrc
        3、 .logout

  关于本文
  相关文档
  
  ++++++++++++++++++++++++++++++++++++++++++++++++++
  正文
  ++++++++++++++++++++++++++++++++++++++++++++++++++
  第一篇 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 &quot;hello&quot;
  set string=&quot;hello&quot;
  echo The value of string is $string
  set命令和重定向符号结合$= 大于等于
  !代替>
  
  四、控制结构
  同其他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完全相同;如:
if ( -r myfile ) then #测试myfile是否可读  echo info
  endif
  
  测试表达式的基本操作:
  
  1、字符串比较: 功能
  == 是否相等,若相等返回真
  != 是否不等,若不等返回真
  =~ 字符串和模式进行测试是否相等(模式为任意正则表达式)
  !~ 字符串和模式测试是否不等(模式为任意正则表达式)
  文件测试: 功能
  -e 测试文件是否存在
  -r 测试文件是否可读
  -w 测试文件是否可写
  -x 测试文件是否可执行
  -d 测试文件名是否为目录
  -f 测试文件是否为普通文件
  -o 测试文件是否被用户所拥有
  -z 测试文件是否为空
  
  2、逻辑运算符: 功能
&& 与运算,两个条件同时蛮族  || 或运算,有一个条件满足
  ! 取反
  
  六、TCSH内建命令
  
  1、数字变量@
  在TCSH中,用@命令代替set命令来声明数字变量,然后进行算术,关系和位操作,数字和字符串变量是两个不同的对象,需要用不同的方法管理,不能把set用于数值变量的设置@命令由关键词,变量名,赋值运算符和表达式构成。如:
%@ num=10 #注意空格  %@ sum=2 * ($num + 3)
  %echo $sum
  %26
  
  2、alias
  格式:alias [name[command]]
  关键词
alias 别名name 引用的命令command  如:
alias list ls  alias list 'ls -l'
  
  3、argv
  当脚本被执行时,命令行中的单词被分析并放入argv数组中。argv[0],argv[1]...argv[n],其中argv[0]保存命令名,argv[1]保存命令的第一个参数,argv[n]命令的第n个参数。argv数组元素可缩写元素号码,前面加$。
  如:$argv[1]写为$1;$argv
  • 写为$*。#argv参数标识符包含输入在命令行中的参数号码,可检查$#argv变量。如:
    arglist  #
      echo &quot;The number of arguments entered is $#argv&quot;
      echo &quot;The list of arguments is : $argv
  • &quot;
      %tcsh arglist a b c
      The number of arguments entered is 3
      The list of arguments is : a b c
      
      argv变量列表:
      命令行参数 说明
      $argv[0]或$0 命令名
      $argv[n]或$n 从1($1-$)开始的第n个命令行参数
      $argv
  • 或$* 从1开始的所有命令行参数
      $#argv或$# 命令行参数的计数
      
      4、bg
      格式:bg [%job]
      bg命令把指定的任务放入后台。如果此任务已经停止,则继续执行,如果没有参数,将当前任务放入后台。(详细用法与BASH相同此处略)
      
      5、break
      格式:
    break  break命令用于退出最接近的foreach/while循环过程,执行同一行中其他的命令。
      
      6、breaksw
      格式:breaksw
      可以从switch语句处中断,在endsw后继续执行。
      http://www.linuxsir.org/main/?q=node/139


  • 运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
    2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
    3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
    4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
    5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
    6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
    7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
    8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

    所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-555530-1-1.html 上篇帖子: shell编程之sed 下篇帖子: Shell.Application (vbs)
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    扫码加入运维网微信交流群X

    扫码加入运维网微信交流群

    扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

    扫描微信二维码查看详情

    客服E-mail:kefu@iyunv.com 客服QQ:1061981298


    QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


    提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


    本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



    合作伙伴: 青云cloud

    快速回复 返回顶部 返回列表