gpt4 book ai didi

function - 如何判断 POSIX shell 中是否存在某个函数?

转载 作者:行者123 更新时间:2023-12-02 19:43:38 25 4
gpt4 key购买 nike

这与 Determine if a function exists in bash 基本上是同一个问题,只不过这次不是针对 Bash,而是针对 a POSIX shell :

如何判断给定名称的shell函数是否存在?

似乎没有一个像 type 这样的典型内置函数是 POSIX 强制要求的,所以这个问题更加困难,甚至可能是不可能的。

最佳答案

POSIX(更准确地说 X/Open Portability Guide )指定 type命令。它没有说明 type 命令应该返回什么来告诉参数是什么。但是,该标准表示它通常会标识操作数,因此 type 实现在传递函数名称时不太可能不在其回复中包含字符串“function”。

这应该适用于大多数(如果不是全部)兼容 POSIX 的 shell:

isFunction()
{
type "$1" | sed "s/$1//" | grep -qwi function
}

您还可以在此处运行command -V 而不是type,并对未指定的输出格式使用相同的注释。我从来不这样做,因为前者打字更短,更容易记住。然而,如果您运行的 shell 决定不包含 XSI(可能是 posh),即通过限制它试图遵守的实用程序来破坏许多现有脚本的可移植性,那么这将是强制性的严格的 POSIX 集。

关于function - 如何判断 POSIX shell 中是否存在某个函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35818555/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com