繁体   English   中英

如何在无业游民的测试中使用命令运行bash脚本?

[英]How to run bash script with commands in tests in vagrant?

使用ssh子命令在vagrant使用简单测试(例如-e运行命令或脚本行可以很好地工作(例如

vagrant ssh -c 'if ! [ -e file.deb ] ; then wget http://a.b/file.deb; fi'

一旦涉及到字符串比较和命令执行bash引用,复杂性立即上升。 我试过了

  • 转义字符串,但这似乎一般不起作用(转义中转义的复杂性……以bash开头是不可接受的)
  • 使用cat <<EOF > file [code]EOF习惯用语将所有内容写入脚本文件,例如

     vagrant ssh -c 'cat <<EOF > fetch.sh \\ #!/bin/bash \\ if [ "$(md5sum file.deb | cut -d \\" \\" -f 1)" != "d757d51819f8f945ae7715b532ab8d2e" ] ; then wget http://a/b/file.deb; fi \\ EOF' vagrant ssh -c 'bash ./fetch.sh' 

    导致./fetch.sh: line 1: syntax error near unexpected token `if'

  • cat EOF习语的失败意味着在vagrant创建的任何类型的脚本的失败( pythongroovy等都将遭受同样的bash无法提供可用的字符串引用/完全可用的痛苦)

vagrant框内的测试中,有什么方法可以执行带有复杂语句的脚本代码? 我是否真的需要通过localhost接口(使用FTP或类似工具)传输脚本?

了解如何使用SSH在远程计算机上运行Shell脚本? 可以使用以下方式连接到无业游民

ssh -p [port] -i [keyfile] vagrant@localhost 'bash -s' < script.sh

(从vagrant ssh-config检索到[port][keyfile] ),并将脚本代码放入script.sh

如果多个vagrant实例正在运行(每个实例都启动其自己的SSH服务器),则端口可以更改,因此您可能需要解析vagrant ssh-config

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM