このスクリプト(open-switch/opx-build/scripts/opx_run)はどのように変数を渡しますか?

このスクリプト(open-switch/opx-build/scripts/opx_run)はどのように変数を渡しますか?

多くのbashの質問と同様に、100%の答えがあると確信していますが、インターネット検索は困難です。

以下を理解しようとしています。スクリプト:

#!/bin/bash

# available options
export OPX_GIT_TAG="${OPX_GIT_TAG:-no}"

# package distribution
export OPX_RELEASE="${OPX_RELEASE:-unstable}"
# currently tracked release
export DIST="${DIST:-stretch}"
export ARCH="${ARCH:-amd64}"

export CUSTOM_SOURCES="${CUSTOM_SOURCES:-}"

# docker image name
IMAGE="opxhub/build"
# docker image tag
VERSION="${VERSION:-latest}"

interactive="-i"
if [ -t 1 ]; then
  # STDOUT is attached to TTY
  interactive="-it"
fi

read -d '' opx_docker_command <<- EOF
docker run
  --rm
  --name ${USER}_$(basename $PWD)_$$
  --privileged
  -e LOCAL_UID=$(id -u ${USER})
  -e LOCAL_GID=$(id -g ${USER})
  -v ${PWD}:/mnt
  -v $HOME/.gitconfig:/home/opx/.gitconfig
  -v /etc/localtime:/etc/localtime:ro
  -e ARCH
  -e DIST
  -e OPX_RELEASE
  -e OPX_GIT_TAG
  -e CUSTOM_SOURCES
  ${interactive}
  ${IMAGE}:${VERSION}
EOF

if [[ $# -gt 0 ]]; then
  # run command directly
  # not using bash because tar fails to complete
  # root cause unknown (see opx_rel_pkgasm.py:tar_in)
  $opx_docker_command sh -l -c "$*"
else
  # launch interactive shell
  # using bash here because tar does not fail in an interactive shell
  $opx_docker_command bash -l
fi

docker-runコマンドを生成する方法、特に、などの部分が混乱しています。括弧で囲む必要はありませんか?そうでない場合、これらの変数はどのように渡されますか?ARCHDISTOPX_RELEASE${}

ベストアンサー1

詳しく見ると、これらの変数の使用がコマンド-eのオプション内にあることがわかりますdocker-run。このオプションは、コンテナで環境変数を使用できるようにするために使用されます。

したがって、ここでスクリプトは以下を指定します。名前値自体ではなく、コンテナに渡す必要がある環境変数の値です(正しく指摘したように、またはのように逆$ARCH参照する必要があります${ARCH})。

あなたは見ることができますドッカー文書さらなる読書のため。

おすすめ記事