简体   繁体   English

如何在unix中获取变量(参数扩展)的变量值?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM