Linux--shell编程--函数,内部命令,调试

Shell函数

  • 同大多数高级语言一样,在shell脚本中可以定义并调用函数
  • 格式:
  • [function] 函数名()
    {
        命令表
    }

     

  • 函数必须先定义,后调用。调用时,直接使用函数名,不用带括号,就像使用命令一样,调用函数不会创建新的进程,而是在本Shell脚本所属的进程内执行
  • 用local指定函数内的局部变量
  • 利用位置参数向函数传递数据,可以利用return [n]在任意位置退出函数,n是退出函数时的退出状态,未指定则退出状态去最后一个命令的退出状态
  • #! /bin/bash
    # function.sh
    output()
    {
        echo "--------------"
        echo $a $b $c
        echo $1 $2 $3
        echo "--------------"
    }
    
    input()
    {
        local y
        
        echo "Please input value of x and y"
        read x y
    }
    
    a="Working directory"
    b="is"
    c="pwd"
    
    # 调用
    output you are welcome
    x=
    input
    echo "value of x is $x, value of y is $y"
    

     

Shell内部命令

  • shell程序本身定义了一些命令,这些命令在本shell进程内执行,例如:.,source,break [n],continue [n],cd,echo,type,exit [n],export,pwd,read,return [n],set,shift [n],test,bg,fg,kill等
    • eval命令:命令首先扫描参数,所有参数被读取并且连接成一个字符串,然后eval再将该字符串当成命令来执行
      • ​​​​​​​格式:eval [参数...]
    • exec命令:在本shell执行由参数arg指定的命令,该命令将替代本shell进程,也就是执行命令后命令行Shell将不复存在,命令退出整个shell就退出了,就是类似常见的fork+exec组合的效果
      • ​​​​​​​格式:exec [arg...]
    • readonly命令:该命令标记给定的name(变量名)是只读的,如果没有给出参数,则列出只读变量的清单,该命令等价于declare -r标记变量
      • ​​​​​​​格式:readonly [name...]
    • trap命令:trap命令可用来设定接收某个信号所完成的动作,忽略某个信号的影响或者恢复信息产生时系统预设的动作
      • trap命令按信号码顺序执行,允许的最高信号码时16
      • 格式:trap [arg] [n] ...
    • set命令:功能主要有三个,显示已定义的全部变量,设置位置参数的值,设置shell脚本的执行选项(标志项)。
      • 设置执行选项标志的一般格式是:
      • set -标志字符
        # 或者
        set +标志字符

         

        • -表示打开该标志项,+表示关闭该标志项
        • ​​​​​​​常用标志项:
          • a:对被修改或被创建的变量自动标记,表明要被(export)的后继命令环境中
          • e:当一个简单命令以非零状态终止时,将立即退出Shell,如果执行失败的命令时while或者until循环,if语句,由&&或||连接的命令行的一部分,则不退出Shell
          • f:禁止路径名扩展,即禁用文件通配符
          • h:打开命令行历史
          • n:读命令但不执行,用来检查脚本的语法
          • x:使Shell对以后各命令行在完成参数替换且执行该行命令之前,先显示该行的内容。在重显命令行的行首由一个“+”号,随后才是执行该命令行的结果
          • v:使Shell对以后个命令行都按原样现在屏幕上显示出来,然后才对命令予以执行,并显示相应结果
        • wait命令:等待进程ID为n的进程终止,并且报告终止状态,如果没有指定n,则等待所有当前活动的子进程终止,wait命令的返回码始终是0
          • 格式:wait [n]

你可能感兴趣的:(C-Linux环境编程)