簡體   English   中英

Sed:如何將反向引用轉換為變量名?

[英]Sed: how to turn a backreference into a variable name?

你知道如何在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展開變量

目前還不清楚你真正想要做什么,但如果你想要做的就是在字符串中創建一些變量,然后評估字符串以擴展變量,那么你想要使用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存在很多陷阱。 但是,這段代碼肯定解決了你所描述的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM