如何解决如何在BASH中的参数列表中转换命令的输出?
有
我需要将多个参数传递给docker
命令,但是我希望此参数字符串是交互式构建的,而不是手工构建的。在我的特定问题中,我想获取本机中的所有环境变量并将每个环境变量设置为build-arg
参数。
例如,如果env变量是
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) .
那有可能吗?
预先感谢
解决方法
使用数组:
dockerargs=()
for i in ENV_VAR1 ENV_VAR2 ENV_VAR3; do
dockerargs+=(--build-arg "$i=${!i}")
done
docker build "${dockerargs[@]}" ...
如果您真的想使用how to iterate over env并执行for i in $(compgen -e)
#!/bin/sh
cat > args < EOF
#!/bin/sh
EOF
env -0 >> args
sed -i s'@^@--build-arg @g' args
tr '\n' ' '
sed -i s'@^@docker build@' args
然后只需将“ args”作为另一个外壳脚本执行即可。我承认我还没有测试过,但是我看不出太多原因导致它不起作用。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。