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
実際に何をしようとしているのかは明確ではありませんが、文字列にいくつかの変数を作成し、文字列を評価して変数を展開するだけであれば、 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の使用には多くの落とし穴があります。ただし、このコードは、説明した問題を確実に解決します。