我在使用Git Bash运行.sh
文件的Windows主机上。
我当前的项目有4个组件。要在localhost上启动它,我必须:
webdriver-manager start
因为我是QA而且还需要运行vagrant up
,然后关闭该窗口(或者通过VirtualBox UI自己启动VM)vagrant ssh
cd /vagrant
cd "component's folder"
docker-compose up
x 4 grunt serve
现在,我有一个.sh
文件,分别为1,2和4,但我找不到如何将多个命令传递给vagrant ssh,特别是因为docker-compose up
需要不断运行
有没有办法传递那些cd
和docker-compose?
我发现the ssh documentation from vagrant提到需要做一些花哨的事情才能让它运行后台进程,但我不知道它在做什么或如何在.sh
中实现它文件,因为措辞是如此愚蠢。
另外,我一般都是shell脚本的新手,所以如果有更聪明的方法来解决这个问题,我也会很感激。这些脚本不是必需的,当我在本地运行测试时,我不想每天都重复输入它。
答案 0 :(得分:4)
从您的Vagrant文件中获取类似内容
$script = <<SCRIPT
echo "running script in the VM"
cd /vagrant
cd "component's folder"
docker-compose up
cd "component's folder 2"
docker-compose up
# and add all other commands you would run from the VM
SCRIPT
Vagrant.configure(2) do |config|
....
config.vm.provision "shell", inline: $script
....
end
注意:这将以sudo(来自您的VM)运行命令,如果您想将它们作为您的流浪者用户运行,只需执行
config.vm.provision "shell", inline: $script, privileged: "false"
答案 1 :(得分:3)
如果需要在¬x·¬y·z + ¬x·y·z + x·y·z + x·y·¬z + x·¬y·¬z
¬x·(¬y·z + y·z) + x·(y·z + y·¬z + ¬y·¬z) //distributivity
¬x·(z·(¬y + y)) + x·(y·(z + ¬z) + ¬y·¬z)) //distributivity
¬x·(z·( 1 )) + x·(y·( 1 ) + ¬y·¬z)) //complementation
¬x·(z ) + x·(y + ¬y·¬z)) //identity for ·
¬x·(z ) + x·(y + y·¬z + ¬y·¬z)) //absorption
¬x·(z ) + x·(y + ¬z·(y + ¬y)) //distributivity
¬x·(z ) + x·(y + ¬z·( 1 )) //complementation
¬x·(z ) + x·(y + ¬z) //identity for ·
¬x·z + x·y + x·¬z //distributivity
¬x·z + x·y + x·¬z //minimal DNF
¬x·z + x·y + x·¬z
¬x·z + x·(y + ¬z) //distributivity
(¬x + x)·(¬x + (y + ¬z))·(z + x)·(z + (y + ¬z)) //distributivity
( 1 )·(¬x + y + ¬z )·(z + x)·(z + y + ¬z) //complementation
( 1 )·(¬x + y + ¬z )·(z + x)·(y + 1) //complementation
( 1 )·(¬x + y + ¬z )·(z + x)·(1) //annihilator for +
(¬x + y + ¬z )·(z + x) //identity for ·
(¬x + y + ¬z)·(x + z) //minimal CNF
上调用命令,您可以通过以下方式在主机上提供provisioning script:
vagrant up
所以Vagrant会将此脚本上传到访客并执行它(使用URL而不是路径也可以),
或者,您可以使用内联shell语法:
config.vm.provision "shell", path: '/vagrant/scripts/provision.sh'
或者在VM中运行脚本,然后尝试:
config.vm.provision "shell", inline: "echo Hello, World"
要在VM中运行一次性关闭命令,您可以使用config.vm.provision "shell", inline: %Q(/usr/bin/env VAR=1 bash /vagrant/script.sh)
命令,例如:
vagrant ssh