如果我有一个包含未转义美元符号的变量,有什么办法可以回显变量的全部内容吗?
例如某些东西调用脚本:
./script.sh "test1$test2"
然后,如果我想使用参数,它会被“截断”,如下所示:
echo ${1}
test1
当然,引用可变名称并没有帮助。我无法弄清楚如何引用它,这样一旦脚本收到参数,我至少可以自己逃避美元符号。
答案 0 :(得分:30)
问题是脚本首先接收“test1”,并且它不可能知道存在对空(未声明)变量的引用。在将$
传递给脚本之前,您必须先将其转义,如下所示:
./script.sh "test1\$test2"
或者像这样使用单引号'
:
./script.sh 'test1$test2'
在这种情况下,bash不会扩展该参数字符串中的变量。
答案 1 :(得分:7)
在运行脚本之前替换变量。
./script.sh 'test1$test2'
答案 2 :(得分:4)
通过使用单引号,$
等元字符将保留其字面值。如果使用双引号,则会插入变量名称。
答案 3 :(得分:0)
正如Ignacio告诉你的那样,变量已被替换,因此你的脚本获得./script.sh test1
和$0
的值{。}}。
但即使在你使用文字引号传递参数的情况下,你也应该在$1
中引用"$1"
。这是一个很好的做法。