如何解决含$字符的环境变量问题?
问题根源与解决办法
嘿,这个问题我太熟了——根源出在shell对$符号的解析逻辑上!
当你用PWD=uNfob$bA5052433或者双引号包裹的PWD="uNfob$bA5052433"设置变量时,shell会把$b当成一个环境变量名来解析。如果你的系统里从来没定义过b这个变量,它就会被替换成空字符串,所以最终PWD的值就只剩下uNfob了。
这里有两种百分百可行的解决方式:
用单引号完全包裹变量值:单引号会让shell彻底忽略内部的特殊字符(包括
$),直接把内容原样赋值给变量。执行这条命令:PWD='uNfob$bA5052433'设置完之后,运行
echo "$PWD"就能看到完整的uNfob$bA5052433了。对
$符号进行转义:如果你一定要用双引号或者无引号的方式,可以在$前面加反斜杠\,告诉shell这只是一个普通字符,不是变量引用:# 无引号转义写法 PWD=uNfob\$bA5052433 # 双引号转义写法 PWD="uNfob\$bA5052433"
验证一下:设置完成后,执行echo "$PWD",就能得到你想要的完整变量值啦。
内容的提问来源于stack exchange,提问作者William
相关产品推荐
相关产品推荐

