如何从终端扩展变量“读取”

时间:2020-05-03 17:16:42

标签: bash

例如,

使用以下内容创建bash tmp.sh脚本,

export tmp=abc
read _test
echo "$_test"

执行bash tmp.sh

输入'$ tmp / def'。

预期结果:“ abc / def”

实际结果:“ $ tmp / def”

2 个答案:

答案 0 :(得分:1)

检查此

 eval "echo $_test"

bash -c "echo $_test"

编辑后期(bash -c)使用的子外壳比eval

更安全

答案 1 :(得分:0)

您可以使用envsubst命令替换如下环境变量:

echo "$_test" | envsubst

或者,因为它在bash中:

envsubst <<<"$_test"

这比evalbash -c安全得多,因为与替换$var或{{1}的实例相比,它不会做任何其他的操作。 }和相应的变量值。