我们有几个脚本,我们希望将变量评估方法从 $VAR_NAME
替换为 ${VAR_NAME}
这是必需的,以便脚本具有统一的变量评估方法
我正在考虑使用 sed
,我编写了如下示例命令,
echo "\$VAR_NAME" | sed 's/^$[_a-zA-Z0-9]*/${&}/g'
同样的输出是
${$VAR_NAME}
现在我不想在 {}
中使用 $
,我该如何删除它?
对于完成此任务有更好的建议吗?
编辑 以下命令有效
echo "\$VAR_NAME" | sed -r 's/\$([_a-zA-Z]+)/${\1}/g'
编辑1
我使用以下命令在脚本文件中进行替换
sed -i -r 's:\$([_a-zA-Z0-9]+):${\1}:g' <ScriptName>
最佳答案
由于 sed
命令的第一部分搜索 $
和 VAR_NAME
,因此整个 $VAR_NAME
部分将放入 ${}
包装器中。
您可以在正则表达式中使用后视搜索 $
部分,这样您最终可以使用 /{&}/结束
因为 sed
调用g$
将位于匹配表达式的左侧。
http://www.regular-expressions.info/lookaround.html
http://www.perlmonks.org/?node_id=518444
我认为 sed
不支持这种正则表达式,但您可以创建一个以 perl -pe
开头的命令。我相信以下 perl 命令可以满足您的需求。
perl -p -e 's/(?<=\$)[_a-zA-Z0-9]*/{$&}/g'
关于linux - 将所有脚本中的变量评估方法从 $VAR_NAME 更改为 ${VAR_NAME},我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34148834/