如果我有一个包含未转义美元符号的变量,有没有办法将整个变量的内容输出?
例如,有些东西调用了脚本:
./script.sh "test1$test2"
然后如果我想使用参数,它会被“截断”如下:
echo ${1}
test1
当然,用单引号括起来的变量名并没有帮助。我无法弄清楚如何对其进行引用,以便在脚本接收参数后至少可以自己转义美元符号。
如果我有一个包含未转义美元符号的变量,有没有办法将整个变量的内容输出?
例如,有些东西调用了脚本:
./script.sh "test1$test2"
然后如果我想使用参数,它会被“截断”如下:
echo ${1}
test1
当然,用单引号括起来的变量名并没有帮助。我无法弄清楚如何对其进行引用,以便在脚本接收参数后至少可以自己转义美元符号。
$
进行转义,像这样:./script.sh "test1\$test2"
或者像这样使用单引号'
:
./script.sh 'test1$test2'
./script.sh 'test1$test2'
使用单引号时,像$
这样的元字符将保留其字面值。如果使用双引号,则变量名将被插值。
正如Ignacio告诉你的那样,变量被替换了,所以你的脚本得到了./script.sh test1
作为$0
和$1
的值。
但即使在你使用文字引号传递参数的情况下,你也应该始终在echo "${1}"
中引用"$1"
。这是一个好习惯。