如何在Bash中实现单引号内变量展开并保留单引号输出
解决Bash变量展开后保留单引号的问题
在Bash脚本里要实现变量展开后被单引号包裹,直接用引号嵌套或者转义单引号就能搞定,不需要使用HTML实体(比如"),下面是两种可行的写法:
方法1:双引号包裹+内部单引号
用双引号把整个表达式包起来,内部嵌入单引号和变量,Bash会自动展开双引号内的变量:
Where schemaname = "'$USERNAME'"
当$USERNAME的值为XYZ_OWNER时,展开后结果为:
Where schemaname = 'XYZ_OWNER'
方法2:转义单引号
如果不想用双引号包裹,也可以对单引号进行转义,直接配合变量使用:
Where schemaname = \'$USERNAME\'
同样能得到符合预期的输出结果。
错误原因说明
你之前使用的"'""$USERNAME""'"写法里,"是HTML中的双引号转义字符,在Bash脚本里这属于无效的普通字符串,会被直接输出,所以才会出现"'"XYZ_OWNER""'"这类错误结果。直接使用原生的单/双引号即可,无需借助HTML实体。
内容的提问来源于stack exchange,提问作者gaurav sharma
相关产品推荐
相关产品推荐

