我之前试图回答这个问题: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}"
)所以为什么不显示变量值?
答案 0 :(得分:0)
您正在使用grep来解析inputfile.txt,并且在sed中您添加了$,因此您从$和变量名称的组合中创建了字符串,这本身并不是变量。