我想使用SED在第16行输入一行 -javaagent:/prod/msp/domains/dynamicapp_domains/AppDynamic/AppAgent/ver4.1.4.3/javaagent.jar -Dprobe.id = 10.204.198.1_msp_dynamicapp_tomcat_01 -Dprobe.group = 10.204.198.1T&#34 ;;
我用过:
HOST=$(hostname)
sed -i '16iPROBE_OPTS="-javaagent:/prod/msp/domains/dynamicapp_domains/AppDynamic/AppAgent/ver4.1.4.3/javaagent.jar -Dprobe.id=$HOST_msp_dynamicapp_tomcat_01 -Dprobe.group=$HOST";' startup.sh
但是插入$HOST
原样。
答案 0 :(得分:0)
问题是整个字符串用单引号括起来。所以$是逃脱的。您可以关闭单引号,将$HOST
括在双引号中并再次打开单引号。
所以试试这个
sed -i '16iPROBE_OPTS="-javaagent:/prod/msp/domains/dynamicapp_domains /AppDynamic/AppAgent/ver4.1.4.3/javaagent.jar -Dprobe.id='"$HOST"'_msp_dynamicapp_tomcat_01 -Dprobe.group=$HOST";' startup.sh
如果$HOST
不包含空格
HOST
周围的双引号并不重要
还有一条评论:使用$HOST_msp_dynamic...
会导致很难找到错误。这是指环境变量HOST_msp_dynamic...
,因为_
是环境变量字符。请改用${HOST}_msp_dynamic...
。