В рамках своих задач по обеспечению в 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
но всякий раз, когда я перехожу в бродягу и $run sh test.sh
.Я получу эту ошибку.