博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bash 函数
阅读量:2242 次
发布时间:2019-05-09

本文共 897 字,大约阅读时间需要 2 分钟。

一个shell函数,如前面的SHELL语法描述定义,存储了一系列稍后执行的命令。当一个壳函数名被用作一个简单的命令的名称,则执行与该功能名称相关联的命令的列表。函数在当前shell的上下文中执行;没有创建新的进程来解释它们(用shell脚本的执行对比这一点)。当执行功能,函数的自变量成为其执行过程中的位置参数。特殊参数#被更新以反映这个变化。特殊参数0保持不变。所述FUNCNAME变量的第一个元素,而所述功能正在执行被设置为函数的名称。

在shell执行环境的所有其他方面都是一个函数,并与这些例外来电者之间是相同的:在调试和RETURN陷阱(参见下面的SHELL内建命令内建陷阱的描述)是不能继承的,除非该功能被赋予了跟踪属性(见下面的申报内建的说明)或-o functrace外壳选项提供了内建命令set启用(在这种情况下,所有的功能继承了DEBUG和RETURN陷阱),和ERR陷阱不会被继承,除非-oerrtrace外壳选项已启用。

局部变量的函数可以与当地的内置命令声明。通常情况下,变量和它们的值的功能和它的调用者之间共享。

最有趣的变量,如果设置为数值大于0,定义了一个最大的功能嵌套级别。超出限制的函数调用导致整个命令中止。

如果内建命令返回在函数执行时,函数执行完毕并执行的函数调用之后的下一个命令继续。执行恢复之前执行与RETURN陷阱相关联的任何命令。当函数完成后,位置参数和特殊参数#的值恢复到之前的函数执行所具有的数值。

函数名和定义可以使用-f选项将申报上市或简化字内建命令。-f选项来申报或排版只列出函数名(以及可选的源文件和行号,如果extdebug外壳选项启用)。函数可以被导出,使得子shell已经自动将它们与-f选项导出内建定义。函数定义可以使用-f选项未设定内建被删除。需要注意的是外壳函数和变量具有相同的名称可能导致传递到外壳的children.Care环境中的多个同名的条目应的情况下采取这样的地方可能会导致问题。

函数可以是递归的。所述FUNCNEST变量可以用于限制函数调用堆栈的深度和限制函数调用的数目。缺省情况下,则不限制递归调用的次数。

转载地址:http://znwdb.baihongyu.com/

你可能感兴趣的文章
【LEETCODE】53-Maximum Subarray
查看>>
【LEETCODE】215-Kth Largest Element in an Array
查看>>
【LEETCODE】241-Different Ways to Add Parentheses
查看>>
【LEETCODE】312-Burst Balloons
查看>>
【LEETCODE】232-Implement Queue using Stacks
查看>>
【LEETCODE】225-Implement Stack using Queues
查看>>
【LEETCODE】155-Min Stack
查看>>
【LEETCODE】20-Valid Parentheses
查看>>
【LEETCODE】290-Word Pattern
查看>>
【LEETCODE】36-Valid Sudoku
查看>>
【LEETCODE】205-Isomorphic Strings
查看>>
【LEETCODE】204-Count Primes
查看>>
【LEETCODE】228-Summary Ranges
查看>>
【LEETCODE】27-Remove Element
查看>>
【LEETCODE】66-Plus One
查看>>
【LEETCODE】26-Remove Duplicates from Sorted Array
查看>>
【LEETCODE】118-Pascal's Triangle
查看>>
【LEETCODE】119-Pascal's Triangle II
查看>>
word2vec 模型思想和代码实现
查看>>
怎样做情感分析
查看>>