我为我的Android应用程序创建了一个.keystore,生成一个随机密码。它在同一密码中包含引号(")和单引号('),如下所示:xxxxxx" xxx!\ x =' x
我正在尝试使用keytool传递密码。我怎样才能传递密码?
keytool -list -storepass "<my_password>" -keystore my.keystore
并显示:
-bash:!\ xx&#39; x&#34;:未找到事件
谢谢!
修改 我尝试使用:
keytool -list -storepass xxxxxx\"xxx\!x=\'x -keystore my.keystore
keytool错误:java.io.IOException:Keystore被篡改,或 密码不正确
答案 0 :(得分:0)
不幸的是我猜你必须逃避特殊字符,如下:
xxxxxx\"xxx\\!xx\'x
答案 1 :(得分:0)
如果你不知道历史扩展是什么,你不能使用它,或者你不知道你是否使用它,将set +H
追加到你的.bashrc
禁用它。这将阻止交互式bash会话搞乱你那么好的感叹号。
您也可以从提示符处运行set +H
以禁用该会话:
$ echo "!foo"
bash: !foo: event not found
$ set +H
$ echo "!foo"
!foo
或者,您可以通过在单引号中添加感叹号来解决此问题:
$ echo "fo'o!ba\\r"
bash: !ba\\r: event not found
$ echo "fo'o"'!'"ba\\r"
fo'o!ba\r
此处双引号字符串按原样使用,但!
替换为"'!'"
,它会关闭双引号,启动单引号段,添加!
,然后关闭单引号并再次打开双引号字符串。
答案 2 :(得分:0)
我会将密码粘贴到变量
中pass='xxxxxx"xxx!\x='\''x'
'\''
位是在bash中将单引号嵌入单引号字符串的一种方法。
然后你可以在双引号中使用变量
cmd -p "$pass"