Bash回显变量名,而不是值
我刚才试图回答这个问题: 我有一个文件(Bash回显变量名,而不是值,bash,echo,Bash,Echo,我刚才试图回答这个问题: 我有一个文件(inputfile.txt),其中一些变量正在初始化,例如: name="Joe" last="Doe" ... # Many more variables defined here city="Los Angeles" 该文件可以有几行长,并且变量名是任意的。现在,我想通过执行以下操作来回显输入文件中的所有变量: echo "$(grep -o "^[^=]\+" inputfile.txt | sed '
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}”
)那么为什么不显示变量值呢?您使用grep来解析inputfile.txt,在sed中添加$,结果是,您从$和变量名的组合中生成了字符串,而变量名本身不是变量。您可以在echo语句中使用eval,以便它生成您想要的结果,然后您可以回显它结果。太棒了,使用eval有效,谢谢。