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 に答える