替换路径字符串包括环境变量

时间:2017-11-19 07:31:27

标签: unix awk log4j substring

我正在尝试从log4j.properties获取应用程序日志路径并尝试使其成为动态路径。 log4j.properties中的日志文件包含{catalina.base},我想用$ CATALINA_HOME环境变量替换它。 我在下面使用了字符串替换。

以下是代码;

/ *从log4j.properties * /

获取日志路径
  

logfile = $(awk'/ LOGFILE.File/{print $ NF}'$ CATALINA_HOME / webapps /“$ filename”/WEB-INF/classes/log4j.properties | grep -Po'LOGFILE.File = \ K [^“] *')

/ *将{catalina.base}替换为$ CATALINA_HOME * /

  

convertlogfile = “$ {日志文件/”{catalina.base} “/ $ CATALINA_HOME}”

/ *参见输出* /

  

echo $ convertlogfile

问题是输出是: $的/ usr /本地/ Tomcat的/日志/ Application.log

我无法摆脱最初的'$'符号,我无法使用该路径。

1 个答案:

答案 0 :(得分:0)

如果echo $convertlogfile的输出为$/usr/local/tomcat/logs/Application.log, 那么$logfile的值必须是${catalina.base}。 然后我不明白为什么你想要使用模式替换,只需:

convertlogfile=$CATALINA_HOME

但是无论如何,要在开始时删除$,你可以像这样写下替换,但是再一次,我没有看到这一点:

convertlogfile="${logfile/"\${catalina.base}"/$CATALINA_HOME}"