【问题标题】:Replace path string including environment variable替换包含环境变量的路径字符串
【发布时间】:2017-11-19 07:31:27
【问题描述】:

我正在尝试从 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}"

/* 查看输出 */

回显 $convertlogfile

问题是输出是: $/usr/local/tomcat/logs/Application.log

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

【问题讨论】:

    标签: unix awk log4j substring


    【解决方案1】:

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

    convertlogfile=$CATALINA_HOME
    

    但是无论如何,要去掉开头的$,你可以这样写替换,但话又说回来,我看不出重点:

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

    【讨论】:

      猜你喜欢
      • 2021-03-31
      • 1970-01-01
      • 2016-06-13
      • 1970-01-01
      • 2013-07-26
      • 2016-10-03
      • 2018-06-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多