2015-10-05 65 views
1

请帮我理解并可能解释这一点。 假设我有2个ENV变量:已定义Linux环境变量但未反映值

$REL --> foo 
$MEL --> bar 

现在,如果我echo $REL$MEL它的工作原理。

如果我echo test$REL,它的工作原理(命名为testFoo)

但为什么Linux无法这样使用时识别变量:$RELtest

我明白这看起来像最愚蠢的问题,但有没有办法告诉系统在已设置的env变量中查找字符串的匹配部分并替换该部分?

我也明白,在做test$REL时,它是$作为一个标识符。 如果这不可能,那么如何解释限制? 禁止显示此文档的任何使用示例都会对我有所帮助。

+0

你需要括号来表示其文本部分是变量名whenit不是所有的人。 'echo“$ {REL}测试”' – tripleee

回答

3

随着$RELtest,外壳将其解释为变量RELtest的价值 - 这是无法弄清楚,你的意思是REL其次是文字test因为没有分隔符。你需要更明确 - 用{}引用变量:

$ echo ${REL}test 
footest 

参见When do we need curly braces in variables using Bash?