提取shell脚本中使用的环境变量

shstlldc  于 2023-04-07  发布在  Shell
关注(0)|答案(1)|浏览(148)

有一些方法可以提取脚本使用的所有环境变量吗?我有一些大型脚本使用多个环境变量来正常工作。
但是阅读所有的代码,手动复制所有的环境变量“调用”,我发现这将是非常无聊的,并与一个高变化os错过了其中的几个!
有某种脚本或插件可以完成这种工作吗?
例如:

teste.sh:
  if [ ! -z "$CI_COMMIT_TAG" ] ; then
  export DOCKER_IMAGE_FULL_NAME="$REGISTRY_URL/$DOCKER_IMAGE_NAME:$CI_COMMIT_TAG"
  else
  export DOCKER_IMAGE_FULL_NAME="$REGISTRY_URL/$DOCKER_IMAGE_NAME:pid$CI_PIPELINE_ID"
  fi

Variables Found:
$CI_COMMIT_TAG
$REGISTRY_URL
$DOCKER_IMAGE_NAME
$CI_PIPELINE_ID
mjqavswn

mjqavswn1#

远非完美,但您可以使用正则表达式来提取$var${VAR}${Var-default}${VAR:+alternative}等形式的所有变量扩展。

grep -io '\${\?[[:alnum:]_]\+[}:+-=?]\?' yourscript.sh | tr -d '{}:+-=?'

等效的扩展grep调用:

grep -ioE '\$\{?[[:alnum:]_]+[}:+-=?]?' yourscript.sh | tr -d '{}:+-=?'

首先,所有看起来像变量的东西都被grepped,然后从输出中删除分隔符。

相关问题