Shell脚本创建含未解析变量的字符串遇Missing }错误求助
解决Shell脚本字符串变量的"Missing }."错误并保留变量形式
你的问题出在引号嵌套混乱和未阻止变量解析上:原代码里的双引号会让Shell尝试解析${domain.home}和${weblogic.Name},同时引号的错误嵌套触发了语法报错。要保留这两个变量的原始字符串形式,同时解决语法错误,有两种简单的实现方式:
方法一:用单引号包裹整个字符串
单引号在Shell里会完全保留内部内容的原样,不会解析任何变量,写法最简洁:
log_handler_ws_async='<property name="path" value="${domain.home}/servers/${weblogic.Name}/logs/async.log"/>'
输出这个变量时,会完全符合你的预期格式。
方法二:转义变量中的$符号
如果必须使用双引号包裹整体,需要把每个$转义成\$,阻止Shell解析变量:
log_handler_ws_async="<property name='path' value='\${domain.home}/servers/\${weblogic.Name}/logs/async.log'/>"
原代码错误原因
原代码里的"${domain.home}"写法,在双引号环境下Shell会尝试解析该变量,同时前后的'"引号组合导致Shell无法正确匹配引号边界,最终抛出"Missing }."的语法错误。
内容的提问来源于stack exchange,提问作者Ban
相关产品推荐
相关产品推荐

