我正在运行我编写的这个小测试脚本:
#!/bin/bash
TESTCASE=$@
testHarness <<runTest
$TESTCASE
runTest
从命令行:
./test.sh "1092$212"
但是美元符号被剥夺了。如果我逃脱了,那就行了。但是我认为双引号可以保护我免于这样做。有人可以帮我了解发生了什么以及如何解决此问题吗?
问题在于它在您想要的东西上是模棱两可的-即使对于我来说也是人类,因此计算机没有机会。也许bash解释器正试图获得212美元。如果您尝试扩展一个不存在的变量,Bash会自动失败,因此$会被剥离。考虑将变量包装在方括号内,例如“ 1092 $ {2} 12”
—
Brian Peterson 2013年