Linux 脚本 : Reinterpret environment variable

标签 linux bash shell command

我正在创建一个读取其他一些环境变量的 Bash 脚本:

echo "Exporting configuration variables..."
while IFS="=" read -r k v; do
    key=$k
    value=$v

    if [[ ${#key} > 0 && ${#value} > 0 ]]; then
        export $key=$value
    fi
done < $HOME/myfile

并有变量:

$a=$b/c/d/e

并想像这样调用$a:

cp myOtherFile $a

复制的目标文件夹的结果是“$b/c/d/e”,并显示错误:

"$b/c/d/e" : No such file or directory

因为它按字面解释为文件夹路径。

cp 命令中使用之前是否可以重新解释此路径?

最佳答案

您需要eval 来执行此操作:

$ var=foo
$ x=var
$ eval $x=another_value
$ echo $var
another_value

在使用 eval 之前,我向您推荐此文档:http://mywiki.wooledge.org/BashFAQ/048

更安全的方法是使用declare而不是eval:

declare "$x=another_value"

感谢 chepner 2 提供最新信息。

关于Linux 脚本 : Reinterpret environment variable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12676092/

相关文章:

linux - Centos:有很多 'httpd start'进程

c++ - Qt 和 Q_OBJECT

Linux 控制台 : git command not found on x64 Cent OS

python - 使用 bash 或 python 将路由器配置文件转换为 csv

c++ - 从 shell 命令读取值 Linux

linux - 使用curl shell脚本登录后上传文件

linux - netcat 不发送 LAST_ACK

bash - 如何提取具有公共(public)字段的行

bash:分组或合并行选择最大时间戳

linux - bash 脚本没有在 nohup 中运行,但可以独立运行