Skip to content
Advertisement

Bash escape character

I have this very reduced example of a bash command, where I want the $ sign escaped. So the command :

su -m user -c "echo $test"

should print out:

$test

a simple $test does not work unfortunately. I tried lots of other stuff but still couldn’t find a solution. Any suggestions ?

Advertisement

Answer

Put it in single quotes rather than double quotes.

su -m user -c 'echo $test='

The single quotes keep the variable from being expanded by the original shell. The backslash then escapes the dollar sign in the shell run by su.

See Difference between single and double quotes in Bash

In answer to the comment, you can switch to double quoting to get single quotes into the string.

su -m user -c 'echo $test='"'1'"
User contributions licensed under: CC BY-SA
1 People found this is helpful
Advertisement