我有这个命令:
ovftool --acceptAllEulas -ds="Local_Storage_1_39" -n="VR-OVF" --net:"Management Network"="VM Network 2" --prop:"password"="R3d@ctedPassw0rd!"$a" --prop:"ntpserver"="10.109.10.140" --prop:"vami.ip0.vSphere_Replication_Appliance"="10.109.10.198" --vService:installation=com.vmware.vim.vsm:extension_vservice /mnt/iso/bin/vSphere_Replication_OVF10.ovf vi://"[email protected]":'R3d@ctedPassw0rd!'@10.109.10.142/?ip=10.109.8.39
输出是:
-bash: !'@10.109.10.142/?ip=10.109.8.39: event not found
我尝试在单引号内提供密码。一样。我尝试过:
\"'R3d@ctedPassw0rd!'\"
仍然是同样的问题。
答案1
event not found
表示 shell 历史搜索失败。这可能是由于包含 的密码周围的引用不正确!
,因此您的 shell ( bash
) 试图将其解析为历史扩展,但未能成功,并举起它的隐喻之手并返回错误消息:
$ echo Problems!Abound
bash: !Abound: event not found
弱引号不能防止这种情况:
$ echo "Problems!Abound"
-bash: !Abound: event not found
将您的密码放入变量中并间接引用它,或者确保您的密码始终用强引号引起来(如下所示)或正确转义:
$ echo 'Problems!Abound'
Problems!Abound
答案2
您的命令的这一部分前面的引号不匹配。
--prop:"password"="R3d@ctedPassw0rd"$a"
如果将命令粘贴到可以进行语法突出显示的编辑器中,则很容易发现问题。我不确定变量中有什么$a
,但我猜你需要删除它前面的引号以使选项看起来像这样:
--prop:"password"="R3d@ctedPassw0rd$a"