Dereference environment variable on parameter expansion in shell script

I am trying to dereference the value of environment variable using parameter expansion [email protected], but it doesn’t seem to work.

I need to call a shell script with certain arguments. The list of arguments contain environment variables, and the environment variables are expected to be present where the shell script is to be executed. I do not know the list of commands before hand, so I am expanding those list of commands using [email protected]. However, the script is not able to de-reference the value of environment variables.

A minimal setup which explains my problem can be done as below.

  • Dockerfile
FROM alpine:3.10

ENV MY_VAR=production



ENTRYPOINT [ "sh", "" ]

echo "Value of MY_VAR is" $MY_VAR

echo "Begin"

[email protected]

echo "Done"

I can build the image using docker build . -t env-test. When I run it using docker run env-test:latest 'echo $MY_VAR', I get the below output.

Value of MY_VAR is production

While the output that I am expecting is:

Value of MY_VAR is production

SideNote: In actuality I am trying to run it using a compose file like below:

version: '3'

    image: env-test:latest
    command: echo $$MY_VAR

but it again gives me the similar result.

Source: StackOverflow