在实际的工作中,有同事有需求要在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"

最新文章

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

热门文章

  1. eclipse启动了tomcat,但是浏览器打不开欢迎页
  2. Javascript脚本 : eval()函数
  3. 【转】微信中MMAlert(半透明底部弹出菜单)的使用介绍
  4. Android ActionBar仿微信界面
  5. linux 查看 PHP 的默认版本。
  6. LSI SAS3IRCU配置SAS3系列RAID卡
  7. Partial关键字
  8. 为openstack服务使能debug模式
  9. Mysql高性能优化规范建议
  10. [JSOI2007]麻将 模拟 BZOJ1028