У меня проблема с шеллскриптом.
Мне нужно прочитать файл json и передать его в виде строки, используя другую команду.По сути, я читаю файл json с валидатором схемы и передаю этот валидатор схемы в Mongo при создании новой коллекции.
Если я передаю команду, подобную этой, из моего файла .sh:
mongo $DATABASE -u $MY_USER -p $PASS --eval "db.createCollection('$MY_COLLECTION', { validator: { \$jsonSchema: { \"bsonType\":\"object\", \"additionalProperties\":false, \"required\":[ \"mongo-modified\", \"mongo-revision\" ], \"properties\":{ \"_id\":{}, \"Description\":{\"bsonType\":\"string\"},\"mongo-modified\":{\"bsonType\":\"date\"},\"mongo-revision\":{\"bsonType\":\"string\"},\"Summary\":{\"bsonType\":\"string\"}}} } });"
Тогда все работает нормально.Как видите, мне пришлось убежать от всех двойных кавычек, чтобы это сработало.Проблема в том, что вместо того, чтобы жестко закодировать его, я буду читать из файла json:
VALIDATOR=`cat /tmp/schema-validator.json`
И затем я буду называть Монго так:
mongo $DATABASE -u $MY_USER -p $PASS --eval "db.createCollection('$MY_COLLECTION', { validator: { $VALIDATOR } });"
Это не работает таким образом, и я считаю, что причина в кавычках, которые есть внутри моего $ VALIDATOR.
Файл Json выглядит следующим образом:
{
"bsonType": "object",
"additionalProperties": false,
"required": [
"mongo-modified",
"mongo-revision"
],
"properties": {
"_id": {
},
"Description": {
"bsonType": "string"
},
"mongo-modified": {
"bsonType": "date"
},
"mongo-revision": {
"bsonType": "string"
},
"Summary": {
"bsonType": "string"
}
}
Другая возможная причина - наличие нескольких строк,В любом случае, я застрял с этим.
Если бы кто-то мог дать мне указание, это было бы здорово.
Спасибо!