你知道如何在sed中使用反向引用作为变量名吗?
我尝试了什么:
#!/bin/bash
var_one=x
var_two=y
var_three=z
echo "var_one + var_two = var_three" | sed -e "s/\(var_[^\ ]*\)/$\1/g"
我得到了什么:
$var_one + $var_two = $var_three
我想得到什么:
x + y = z
答案 0 :(得分:3)
目前还不清楚你真正要做的是什么,但是如果你想做的只是创建字符串中的一些变量,然后评估字符串以扩展变量,那么你想要使用 eval 。例如:
#!/bin/bash
var_one=x
var_two=y
var_three=z
result=$(
echo "var_one + var_two = var_three" |
sed -e "s/\(var_[^\ ]*\)/$\1/g"
)
eval "echo $result"
使用 eval 涉及很多陷阱。但是,这段代码肯定解决了你所描述的问题。