确定bash中是否存在函数
Determine if a function exists in bash目前,我正在做一些从bash执行的单元测试。 单元测试是在bash脚本中初始化,执行和清理的。 该脚本通常包含init(),execute()和cleanup()函数。 但是它们不是强制性的。 我想测试它们是否定义。 之前,我是通过摸索和诱骗来源来做到这一点的,但这似乎是错误的。 有没有更优雅的方法可以做到这一点? 编辑:以下代码段就像一个超级按钮一样工作:
我认为您正在寻找"类型"命令。它会告诉您某些东西是函数,内置函数,外部命令还是只是未定义。例:
如果声明比测试快10倍,这似乎是显而易见的答案。
编辑:在下面,
声明的" -F"选项使它仅返回找到的函数的名称,而不返回整个内容。 使用/ dev / null不应对性能造成任何可衡量的影响,如果它让您担心的那么多:
或将两者结合起来,为自己带来无意义的享受。他们俩都工作。
借用其他解决方案和评论,我想到了这一点:
用作...
它检查给定的参数是否是一个函数,并避免重定向和其他grepping。 疏通旧帖子...但是我最近使用了它,并测试了以下描述的两种替代方法:
这产生了:
声明是helluvalot更快! 测试不同的解决方案:
输出例如:
因此 归结为使用"声明"来检查输出或退出代码。 输出样式:
用法:
但是,如果使用内存,则重定向到null的速度比输出替换的速度要快(可以说,应该废除过时且过时的cmd方法,而应使用$(cmd)。)而且,如果找到find,则声明返回true / false。未找到,并且函数返回函数中最后一个命令的退出代码,因此通常不需要显式返回,并且由于检查错误代码比检查字符串值(甚至是空字符串)要快: 退出状态样式:
您可能会得到尽可能简洁和良性的评价。 从我对另一个答案的评论中(当我回到此页面时,我一直想念它)
更新
我特别喜欢格雷戈里·约瑟夫的解决方案 但是我已经对其进行了一些修改,以克服"双引号丑陋的把戏":
这告诉您它是否存在,但不是它是一个函数
我将其改进为:
并像这样使用它:
可以使用'type'而不使用任何外部命令,但是您必须调用它两次,因此它的运行速度仍然是'declare'版本的两倍:
另外,这在POSIX sh中不起作用,因此,除了琐事之外,它毫无价值! |
相关内容
-
excel怎么用乘法函数
excel怎么用乘法函数,乘法,函数,哪个,excel乘法函数怎么用?1、...
-
excel中乘法函数是什么?
excel中乘法函数是什么?,乘法,函数,什么,打开表格,在C1单元格中...
-
IE脚本错误如何做Web脚本错误解决技巧
IE脚本错误如何做Web脚本错误解决技巧,,这个问题是由于这样的...
-
标准差excel用什么函数?
标准差excel用什么函数?,函数,标准,什么,在数据单元格的下方输...
-
电脑函数不正确|电脑出现函数不正确
电脑函数不正确|电脑出现函数不正确,,1. 电脑出现函数不正确故...
-
excel函数公式快捷键|excel公式的快捷键
excel函数公式快捷键|excel公式的快捷键,,1. excel公式的快捷...
-
使用函数的快捷键固定|函数公式锁定快捷键
使用函数的快捷键固定|函数公式锁定快捷键,,1. 函数公式锁定快...
-
excel常用函数都有哪些?
excel常用函数都有哪些?,函数,哪些,常用,1、SUM函数:SUM函数的作...
-
怎样初始化手提电脑|怎样初始化手提电脑设置
怎样初始化手提电脑|怎样初始化手提电脑设置,,怎样初始化手提...
-
当前页的脚本失败的解决方案_计算机错误
当前页的脚本失败的解决方案_计算机错误,,核心提示:最近打开网...
-
win10系统无法启动怎么执行“一键修复”功能
win10系统无法启动怎么执行“一键修复”功能,一键,无法启动,朋...
-
金蝶利润表本累计金额函数|金蝶K3利润表中本年
金蝶利润表本累计金额函数|金蝶K3利润表中本年累计数公式怎...
-
电脑关机整人脚本|电脑整人代码怎么关闭
电脑关机整人脚本|电脑整人代码怎么关闭,,电脑整人代码怎么关...
-
电脑磁盘怎么初始化|电脑磁盘初始化是什么意思
电脑磁盘怎么初始化|电脑磁盘初始化是什么意思,,1. 电脑磁盘初...
-
问道手电脑游脚本辅助|问道手游模拟器辅助脚本
问道手电脑游脚本辅助|问道手游模拟器辅助脚本哪个好用,,问道...