[英]How to fetch value of variable of variable (parameter expansion) in unix?
How to fetch value of variable of variable (parameter expansion) in unix? 如何在unix中获取变量(参数扩展)的变量值?
I have a text file(comma separated) filename='workdir.txt' as below which I am reading in unix shell script: 我有一个文本文件(用逗号分隔)filename ='workdir.txt',如下所示,我正在用unix shell脚本阅读:
$AC_WORKDIR,current,FILE
$AC_WORKDIR,1 week,DIR
and so on 等等
$AC_WORKDIR
is env varriable AC_WORKDIR="/home/ascxd01/data/workdir"
already defined. $AC_WORKDIR
是可扩展的AC_WORKDIR="/home/ascxd01/data/workdir"
已定义。
My code is as below: 我的代码如下:
filename='workdir.txt'
while read line; do
work_dir=`echo $line | cut -d',' -f1`
echo "$work_dir"
done< $filename
When I am doing echo "$work_dir"
its giving me $AC_WORKDIR
however I want the actual value of $AC_WORKDIR
which is "/home/ascxd01/data/workdir"
当我做echo "$work_dir"
它给了我$AC_WORKDIR
但是我想实际值$AC_WORKDIR
这是"/home/ascxd01/data/workdir"
Please tell me how to do it. 请告诉我该怎么做。
If you drop the leading $
the indirect expansion should work normally, eg. 如果您删除前导$
则间接扩展应该可以正常工作,例如。
while read line; do
work_dir=`echo $line | cut -d',' -f1 | tr -d '$'` # delete "$"
echo "${!work_dir}"
done< $filename
The linked answer provides other maybe less good alternatives that would work, like eval "echo $work_dir"
. 链接的答案提供了其他可能不太好的替代方法,例如eval "echo $work_dir"
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.