首页 > 解决方案 > 如何在 BASH 的参数列表中转换命令的输出?

问题描述

那里

我需要将多个参数传递给一个docker命令,但我希望以交互方式而不是手动构建这串参数。在我的具体问题中,我想获取这台机器中的所有环境变量并将它们中的每一个设置为build-arg参数。

例如,如果环境变量是

ENV_VAR1=ENV_VALUE1
ENV_VAR2=ENV_VALUE2
ENV_VAR3=ENV_VALUE3

我想建立一个这样的字符串

docker build --build-arg ENV_VAR1=ENV_VALUE1 --build-arg ENV_VAR2=ENV_VALUE2 --build-arg ENV_VAR1=ENV_VALUE1 .`

我想知道如何将这种重复包装在类似这样的 bash 脚本中(请这只是一个伪代码):

docker build $(FOREACH get_output_of_env() AS $env DO `--build-arg $env` END) .

这有可能吗?

提前致谢

标签: bashshell

解决方案


使用数组:

dockerargs=()
for i in ENV_VAR1 ENV_VAR2 ENV_VAR3; do
     dockerargs+=(--build-arg "$i=${!i}")
done
docker build "${dockerargs[@]}" ...

如果您真的想使用如何遍历 env并执行for i in $(compgen -e)


推荐阅读