Linux下Tomcat如何传入'$'符号
2024-09-04 10:23:21
在实际的工作中,有同事有需求要在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"
最新文章
- SharePoint 2013 Designer系列之数据视图
- 为什么在ucos向stm32f103移植时说os_cpu_c.c中有三个函数如OS_CPU_SysTickInit()需要注释掉
- iOS OC和Swift进行互相调用
- ssm开发的一点小技巧
- 2016年中国500强利润率最高的公司,中国500强最赚钱的40家公司,ROE最高的公司
- ffmpeg学习笔记
- 将单链表的每K个节点之间逆序
- android 防止多次点击,它会导致事件侦听响应于其他接口
- CountDownLacth详解
- Eclipse中Maven的配置
- 使用jquery.form.js提交表单上传文件
- MySQL-悲观锁和乐观锁
- ubuntu 部署 wiki.js
- 0429---每日习题 菲薄纳西数列 正则ip匹配
- Shell-4--环境变量
- php判断文件夹是不是存在
- js 之 this的用法
- MySQL索引背后的数据结构及算法原理 (转)
- .net core webapi 部署windows server 2008 r2 笔记
- C语言:将结构体数组的成绩按照从小到大进行排序。