开发者

How to echo a variable containing an unescaped dollar sign in bash

If I have a variable containing an unescaped dollar sign, is there any way I can echo the entire contents of the variable?

For example something calls a script:

./script.sh "test1$test2"

and then if I want to use the parameter it gets "truncated" like so:

echo ${1}

test1

Of course single-quoting the varaible name doesn't help. I can't figure out how to quote it so that 开发者_StackOverflowI can at least escape the dollar sign myself once the script recieves the parameter.


The problem is that script receives "test1" in the first place and it cannot possibly know that there was a reference to an empty (undeclared) variable. You have to escape the $ before passing it to the script, like this:

./script.sh "test1\$test2"

Or use single quotes ' like this:

./script.sh 'test1$test2'

In which case bash will not expand variables from that parameter string.


The variable is replaced before the script is run.

./script.sh 'test1$test2'


by using single quotes , meta characters like $ will retain its literal value. If double quotes are used, variable names will get interpolated.


As Ignacio told you, the variable is replaced, so your scripts gets ./script.sh test1 as values for $0 and $1.

But even in the case you had used literal quotes to pass the argument, you shoudl always quote "$1" in your echo "${1}". This is a good practice.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜