代码之家  ›  专栏  ›  技术社区  ›  mtkarakaya

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

  •  2
  • mtkarakaya  · 技术社区  · 7 年前

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

    这是代码;

    /*从log4j获取日志路径。属性*/

    日志文件=$(awk'/logfile.File/{print$NF}'$CATALINA\u HOME/webapps/“$filename”/WEB-INF/classes/log4j.properties | grep-Po'日志文件。文件=\ K[^”]*')

    /*将{catalina.base}替换为$catalina\u HOME*/

    convertlogfile=“${logfile/”{catalina.base}”/$catalina\u HOME}”

    /*查看输出*/

    echo$convertlogfile

    问题是输出是: $/usr/local/tomcat/logs/Application。日志

    我无法去掉最初的“$”符号,也无法使用路径。

    1 回复  |  直到 6 年前
        1
  •  0
  •   janos slartidan    7 年前

    如果输出 echo $convertlogfile $/usr/local/tomcat/logs/Application.log , 然后 $logfile 必须是 ${catalina.base} . 然后我不明白为什么你要使用模式替换,而你可以简单地做到:

    convertlogfile=$CATALINA_HOME
    

    但无论如何,要剥去 $ 一开始,你可以这样写替换项,但话说回来,我看不出有什么意义:

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