• linux系统的命令组与函数


    一、命令组 

    许多时候,我们在shell操作上,需要在一定条件下一次执行多个命令,也就是说,要么不执行,要么就全执行,而不是每次依序的判断是否要执行下一个命令。或是,需要从一些命令执行优先次顺中得到豁免,如算术的 2*(3+4) 那样...这时候,我们就可引入"命令组"(command group)的概念:将多个命令集中处理。

    在命令行中,有两个meta可以将多个命令集中处理,它们是()和{},但是在技术细节上却有很大差别:

    ():将命令组置于子shell去执行,也称 nested sub-shell,相当于用fork方式去执行命令组;

    {}:在同一个shell内执行,也称为non-named command group,相当于用source方式去执行命令组。

     

    二、函数

    (1) 所谓的函数,就是用一个名字去命名一个命令组,然后再调用这个名字去执行命令组,其实就是相当于给non-named command group加上了一个可以调用的名字。

    (2) 在bash中,函数的定义方式有两种:

    方式一:

    function function_name {

    command1

    command2

    command3

    ....

    }

    方式二:

    fuction_name () {

    command1

    command2

    command3

    ....

    }

     

    三、取消函数

    unset function_name

     

    四、脚本中的脚本

    若我们在shell 操作中,需要不断的重复质行某些命令,我们首先想到的,或许是将命令写成脚本。不过,我们也可以写成函数,然后在命令行中打上function_name就可当一般的脚本来使用了。只是若你在shell中定义的函数 ,除了可用 unset function_name 取消外,一旦退出shell,函数也跟着取消。

    然而,在 script 中使用 function 却有许多好处,除了可以提高整体 script 的执行效能外(因为已被加载),还可以节省许多重复的代码。

    简单而言,若你会将多个命令写成脚本以供调用的话,那你可以将函数看成是脚本中的脚本。

    一般来说,我们可以自行定义许许多多好用的脚本,再集中写在特定文件中,然后,在其它的脚本中用source将它们加载并反复执行。

    RedHat Linux 中的/etc/rc.d/init.d/functions 文件就是这样的作用。

    五、参考

    1. 《shell十三问》

    (完)

  • 相关阅读:
    freenas的踩坑记录:群晖CIFS挂载freeNas的smb共享目录
    【ikuai】爱快软路由上手
    Nacos集成Spring Cloud Gateway使用第三章:nacos配置中心
    Nacos集成Spring Cloud Gateway使用第二章:上手demo
    Nacos集成Spring Cloud Gateway使用第一章:理解解释
    函数指针数组
    回调函数
    使用C语言实现strcpy函数和字符串大小写交换
    Qt : Setting应用程序的数据保存和读取
    Qt 文件操作以及字体颜色选择
  • 原文地址:https://www.cnblogs.com/harrymore/p/5121482.html
Copyright © 2020-2023  润新知