作为Vagrant中配置任务的一部分,我正在使用shyaml解析yaml文件并为各种项目创建虚拟主机文件。在我的特定情况下,我正在尝试设置环境变量。
我的Yaml文件如下:
sites:
site1:
...
env:
DB_NAME: example
DB_USER: root
DB_PASSWORD: root
DB_HOST: localhost
TABLE_PREFIX: www_
根据文档,我应该使用以下代码来获取映射的键和值:
#!/bin/sh
readLine() {
while [ "$1" ]; do
IFS=$'\0' read -r -d '' "$1" || return 1
shift
done
}
cat 'file.yml' | shyaml key-values-0 sites.site1.env |
while readLine key val; do
...
done
但是,如果我在Vagrant(Ubuntu 16.04)中运行此程序,则会出现以下错误:
test.sh: 4: read: Illegal option -d
close failed in file object destructor:
sys.excepthook is missing
lost sys.stderr
我还尝试将shebang设置为:#!/bin/bash
和#!/usr/bin/env bash
,但是每当我向vagrant和$run sh test.sh
转换时。我会得到那个错误。
答案 0 :(得分:0)
好-我改变了Vagrant通过使用内联供应并使用/ bin / bash运行脚本来运行供应脚本的方式。因此:config.vm.provision :shell, inline: '/bin/bash ' + File.join( 'provision', 'test.sh' )