Bash回显变量名,而不是值

时间:2018-04-18 04:27:34

标签: bash echo

我之前试图回答这个问题:How to append lots of variables to one variable with a simple command

我有一个文件(inputfile.txt),其中一些变量是初始化的,例如:

name="Joe"
last="Doe"
...                        # Many more variables defined here
city="Los Angeles"

此文件可以是多行,变量名称是任意的。现在我想通过执行以下操作来回显输入文件中的所有变量:

echo "$(grep -o "^[^=]\+" inputfile.txt | sed 's/^/\$/;:a;N;$!ba;s/\n/$/g')"

但这会打印变量名称,因此输出为:

$name$lastname...$city

我的问题是:为什么echo打印变量名而不是它们的值?我知道使用单引号会打印变量名称(如echo '${var}${var2}'将打印${var}${var2})。但在我的情况下,我有双引号(echo "${var1}${var2}")所以为什么不显示变量值?

1 个答案:

答案 0 :(得分:0)

您正在使用grep来解析inputfile.txt,并且在sed中您添加了$,因此您从$和变量名称的组合中创建了字符串,这本身并不是变量。