2

你知道我如何在 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
4

1 回答 1

3

用 Eval 展开变量

目前尚不清楚您真正想要做什么,但如果您只想在字符串中创建一些变量,然后评估字符串以扩展变量,那么您想使用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有很多陷阱。但是,此代码肯定可以解决您所描述的问题。

于 2012-07-19T06:50:28.187 回答