You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PicoCLI解析含$符号的密码时丢失内容,如何解决?

解决picocli解析含美元符号($)密码被截断的问题

这个问题不是picocli的问题,而是你的命令行shell(比如bash、zsh)会把$符号识别为变量引用标记,自动解析并替换$后面的内容:如果$34是未定义的shell变量,就会被替换为空字符串,导致最终传到Java程序里的密码变成test234。

解决方法分两种场景:

直接在终端执行命令时

  • 用单引号包裹密码:shell不会解析单引号内的变量,能原样保留$符号:
    java -jar encryption.jar passwd-enc -password 'test23$34' -key /user/local/key.txt
    
  • 转义美元符号:在$前添加反斜杠\,让shell把$当作普通字符处理:
    java -jar encryption.jar passwd-enc -password "test23\$34" -key /user/local/key.txt
    

在脚本中传递密码变量时

如果密码是存储在脚本变量里的,传递时要确保变量被正确转义:

# 定义密码时用单引号,避免提前解析
password='test23$34'
# 传递时用双引号包裹变量,确保shell不解析内部的$
java -jar encryption.jar passwd-enc -password "$password" -key /user/local/key.txt

或者提前对变量中的$进行转义处理:

password="test23\$34"
java -jar encryption.jar passwd-enc -password "$password" -key /user/local/key.txt

内容的提问来源于stack exchange,提问作者Panda1667075

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 19:43:15