我正在创建一个读取其他一些环境变量的 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/