Unix 替换包含环境变量的路径字符串
我试图从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=“${logfile/“{catalina.base}”/$catalina_HOME}” /*查看输出*/ echo$convertlogfile 问题是输出是: $/usr/local/tomcat/logs/Application.logUnix 替换包含环境变量的路径字符串,unix,awk,log4j,substring,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/log4
我无法去掉初始的“$”符号,也无法使用路径。如果
echo$convertlogfile
的输出是$/usr/local/tomcat/logs/Application.log
,
然后,$logfile
的值必须是${catalina.base}
。
然后我不明白为什么你想使用一个模式替换,而你可以简单地做到:
convertlogfile=$CATALINA_HOME
但无论如何,要在开始时去掉$
,您可以这样编写替换,但我不明白这一点:
convertlogfile="${logfile/"\${catalina.base}"/$CATALINA_HOME}"