Bash 调用函数时在函数内部运行命令替换

Bash 调用函数时在函数内部运行命令替换,bash,command-substitution,Bash,Command Substitution,我有一个bash脚本,它在一个共享的公共文件lib.sh中有一些助手函数。但是,其中一些函数如下所示: 功能检查{ 本地标签 标签=$(集线器pr显示-h“${BRANCH:-}”-F“%L”) 如果[[$PRLABELS==*“DOTHING”*]] 那是真的 否则错误 fi } 问题在于,在加载脚本时(source lib.sh来自我的主脚本),无论函数是否被调用(或何时调用),都会执行命令替换和标签变量赋值 有没有办法只在函数实际被调用时进行这些命令替换?或者以其他方式使其与脚本正常流程

我有一个bash脚本,它在一个共享的公共文件
lib.sh
中有一些助手函数。但是,其中一些函数如下所示:

功能检查{
本地标签
标签=$(集线器pr显示-h“${BRANCH:-}”-F“%L”)
如果[[$PRLABELS==*“DOTHING”*]]
那是真的
否则错误
fi
}
问题在于,在加载脚本时(
source lib.sh
来自我的主脚本),无论函数是否被调用(或何时调用),都会执行命令替换和
标签
变量赋值


有没有办法只在函数实际被调用时进行这些命令替换?或者以其他方式使其与脚本正常流程中的其他内容一样?

我无法复制此内容。你确定你没有在某处调用该函数吗?设置一个变量并打印某些内容的最小函数不设置变量,也不打印任何来源的内容。您所描述的理论上是不可能的。在调用函数之前,不会执行函数内部的任何内容。您可以在文件开头添加
set-x
,以跟踪执行的内容(您可以调用
set+x
停止显示详细信息)。