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


9

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

#!/bin/bash

TESTCASE=$@
testHarness <<runTest
$TESTCASE
runTest

从命令行:

./test.sh "1092$212"

但是美元符号被剥夺了。如果我逃脱了,那就行了。但是我认为双引号可以保护我免于这样做。有人可以帮我了解发生了什么以及如何解决此问题吗?


问题在于它在您想要的东西上是模棱两可的-即使对于我来说也是人类,因此计算机没有机会。也许bash解释器正试图获得212美元。如果您尝试扩展一个不存在的变量,Bash会自动失败,因此$会被剥离。考虑将变量包装在方括号内,例如“ 1092 $ {2} 12”
Brian Peterson 2013年

Answers:


18

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


谢谢。这可行。是否有一个原因?
阿米尔·阿富汗尼

8
是。它就是这样设计的!能够在带引号的字符串中扩展变量实际上非常有用。这是一个功能。如果您不希望出现这种情况,请使用单引号,这就是它们的设计目的。
卡莱布
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.