Linux下Tomcat如何传入'$'符号

在实际的工作中,有同事有需求要在Tomcat的启动脚本中添加启动参数,而且启动参数中带有特殊的字符'$',在实际的应用程序中,使用System.getProperty()进行获取设置的值,但是这个字符会解析不出来。

比如想在脚本中获取`aa`的值,预设值为'abc$123'

JAVA_OPTS="$JAVA_OPTS "-Daa="abc$123"

在代码中我想通过System.getProperty("aa"),获取到的值为"abc$123"

获取属性的jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.util.*"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<h1>WELCOME</h1>
<%
        String value = System.getProperty("aa");
        out.println(value);
%>

</body>
</html>

但是实际呢,获取的值为`abcrun23`

但是在windows下直接加入到setvmargs.bat中如下设置,能够获取到正常值

set JAVA_OPTS=%JAVA_OPTS% -Daa="abc$123"

猜测是由于在Linux下,将$1作为当前调用脚本的第一个参数给替换了,因为我使用的是./catalina.sh run,所以就将$1替换成了run

如何解决呢?

经过各种实验,最终发现,可以通过转义符号与单引号混用,才可以避免替换

使用的为

JAVA_OPTS="$JAVA_OPTS "-Daa="abc'$'123"
原文地址:https://www.cnblogs.com/mubing/p/7238122.html