использование флага -d с командой чтения в Ubuntu с помощью команды vagrant provision - PullRequest
0 голосов
/ 24 декабря 2018

В рамках своих задач по обеспечению в 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.Я получу эту ошибку.

1 Ответ

0 голосов
/ 28 декабря 2018

Хорошо, поэтому я изменил способ, которым Vagrant запускает сценарий предоставления, используя встроенную подготовку и запуская сценарий с / bin / bash.Итак: config.vm.provision :shell, inline: '/bin/bash ' + File.join( 'provision', 'test.sh' )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...