小编Dot*_*tan的帖子

sed:用可变内容替换字符串

我正在尝试编写一个脚本,该脚本在特定模式 ( {?varname})中查找字符串并用相应的环境变量替换它们。

这是我到目前为止:

function get_env() {
   var=$1
   echo ${!var}
}

sed -e 's/{?\([a-z]*}\)/'$(get_env '\1')'/g' file.txt
Run Code Online (Sandbox Code Playgroud)

该功能有效,例如get_env LOGNAME-->dotan

sed 返回函数的值,例如,如果我将函数的内容替换为echo __$1__I will get {?logname}-->__LOGNAME__

然而放在一起是行不通的。这就像函数总是返回一个空字符串。

我不确定是什么导致了这里的问题。有任何想法吗?

sed

3
推荐指数
1
解决办法
6770
查看次数

标签 统计

sed ×1