如何在bash中回显包含未转义美元符号的变量

Not*_*t22 17 bash escaping dollar-sign

如果我有一个包含未转义美元符号的变量,有什么办法可以回显变量的全部内容吗?

例如,某些东西调用脚本:

./script.sh "test1$test2"

然后,如果我想使用参数,它会被"截断",如下所示:

echo ${1}
test1

当然,引用可变名称并没有帮助.我无法弄清楚如何引用它,这样一旦脚本收到参数,我至少可以自己逃避美元符号.

小智 30

问题是脚本首先接收"test1",并且它不可能知道存在对空(未声明)变量的引用.你必须$先将它传递给脚本,如下所示:

./script.sh "test1\$test2"
Run Code Online (Sandbox Code Playgroud)

或者使用这样的单引号':

./script.sh 'test1$test2'
Run Code Online (Sandbox Code Playgroud)

在这种情况下,bash不会扩展该参数字符串中的变量.


Ign*_*ams 7

在运行脚本之前替换该变量.

./script.sh 'test1$test2'
Run Code Online (Sandbox Code Playgroud)

  • 从文件中读取数据不会进行变量替换。 (2认同)