bash中引号内的美元符号插值

Ami*_*ani 9 shell bash quoting

我正在运行我写的这个小测试脚本:

#!/bin/bash

TESTCASE=$@
testHarness <<runTest
$TESTCASE
runTest
Run Code Online (Sandbox Code Playgroud)

从命令行:

./test.sh "1092$212"
Run Code Online (Sandbox Code Playgroud)

但美元符号正在被剥离。如果我逃脱它,它会起作用。但我认为双引号会保护我不需要这样做。有人可以帮助我了解发生了什么以及如何解决这个问题吗?

Cal*_*leb 18

变量仍然在双引号内展开。如果您想避免这种行为,您应该改用单引号。

  • 是的。原来是这样设计的!能够在带引号的字符串中扩展变量实际上非常有用。这是一个特点。如果您不想要这种行为,请使用单引号,这就是它们的设计目的。 (8认同)