3

I'm trying to run the following docker exec command in a bash script where I'm passing 2 parameters into the bash script. The command is supposed to delete directories that begin with a certain string. I don't seem to be passing in the parameters correctly:

  • $container is set to $1

  • $database is set to $2

  • $currdate is set internally in the bash script

    docker exec $container sh -c 'rm -rf /path/to/directory/${database}-${currdate}-*/'

1
  • 1. use your variables inside double-quotes. 2. variables inside single quotes do not interpolate. hope it will help. Commented Oct 6, 2020 at 22:02

1 Answer 1

3

You have to use double quotes to interpolate variables. Single quotes won't interpolate anything, but double quotes will.

docker exec $container sh -c "rm -rf /path/to/directory/${database}-${currdate}-*/"

From Bash manual:

3.1.2.2 Single Quotes

Enclosing characters in single quotes (') preserves the literal value of each character within the quotes. A single quote may not occur between single quotes, even when preceded by a backslash.

3.1.2.3 Double Quotes

Enclosing characters in double quotes (") preserves the literal value of all characters within the quotes, with the exception of $, `, \, and, when history expansion is enabled, !. The characters $ and ` retain their special meaning within double quotes (see Shell Expansions). The backslash retains its special meaning only when followed by one of the following characters: $, `, ", \, or newline. Within double quotes, backslashes that are followed by one of these characters are removed. Backslashes preceding characters without a special meaning are left unmodified. A double quote may be quoted within double quotes by preceding it with a backslash. If enabled, history expansion will be performed unless an ! appearing in double quotes is escaped using a backslash. The backslash preceding the ! is not removed.

The special parameters * and @ have special meaning when in double quotes (see Shell Parameter Expansion).

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.