如何将 bash_profile 中的函数调用到 bash 脚本中

如何将 bash_profile 中的函数调用到 bash 脚本中

我有一个函数.bash_profile

certspotter(){
curl -s https://certspotter.com/api/v0/certs\?domain\=$1 | jq '.[].dns_names[]' | sed 's/\"//g' | sed 's/\*\.//g' | sort -u | grep $1
}

我正在尝试在 bash 脚本中调用该函数test.sh

但出现如下错误

test.sh: 4: test.sh: certspotter: not found

在该脚本中调用它的任何方式

答案1

您必须导出定义函数的位置(在 .bash_profile 中)

export -f certspotter

答案2

看来这里有两个问题。首先,定义函数需要function关键字,至少在我的系统上是这样,因此函数定义应该是:

function certspotter(){
    curl -s https://certspotter.com/api/v0/certs\?domain\=$1 | jq '.[].dns_names[]' | sed 's/\"//g' | sed 's/\*\.//g' | sort -u | grep $1
}

然后,正如注释中提到的,调用该函数的脚本需要获取包含该函数的文件。由于您目前已经设置完毕,因此将是:

. .bash_profile

但是,您可能需要考虑是否要调用 .bash_profile 只是为了导入函数。相反,您可能想为您的函数库创建一个单独的脚本文件。

相关内容