我正在尝试编写一个脚本,该脚本在特定模式 ( {?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 ×1