我有运行可通过localhost和转发端口访问的服务器的VirtualBox VM。 我需要运行一些shell脚本并根据结果实现一些业务逻辑。
我尝试了以下命令为例:
VBoxManage guestcontrol <UUID> exec --image /bin/sh --username <su username> --password <su password> --wait-exit --wait-stdout --wait-stderr -- "[ -d /<server_folder>/ ] && echo "OK" || echo "Server is not installed""
但我收到了错误:
/bin/sh: [ -d <server_folder> ] && echo : No such file or directory
上面的语法有什么问题?
答案 0 :(得分:3)
首先确保VBoxManage.exe
在您的路径中!
其次,你必须小心你的报价。你用过:
"[ -d /<server_folder>/ ] && echo "OK" || echo "Server is not installed""
你必须使用singel配额作为最外层的引用:
'[ -d /<server_folder>/ ] && echo "OK" || echo "Server is not installed"'
最后,您必须在参数前添加-c
(以致电/bin/sh -c '...'
)。
完整的命令:
VBoxManage guestcontrol <UUID> exec --image /bin/sh --username <su username> --password <su password> --wait-exit --wait-stdout --wait-stderr -- -c '[ -d /<server_folder>/ ] && echo "OK" || echo "Server is not installed"'