Как выполнять команды mongodb внутри скрипта bash

#linux #mongodb #bash #kubernetes #containers

#linux #mongodb #bash #kubernetes #контейнеры

Вопрос:

Я пытаюсь запускать команды mongo через мой файл скрипта bash.

У меня есть sample.sh — запуск с помощью ./sample.sh

Я хочу запустить приведенную ниже команду внутри моего sample.sh файл. Это скрипт bash. Я хочу, чтобы команды mongo запускались внутри файла, а не внутри оболочки.

 kubectl exec $mongoPodName -c mongo-mongodb -- mongo db.createUser({user:"admin",pwd:"123456",roles:[{role:"root",db:"admin"}]})

  

Я получаю сообщение об ошибке ниже :

 ./generate-service-dbs.sh: line 37: syntax error near unexpected token `('
./generate-service-dbs.sh: line 37: `kubectl exec $mongoPodName -c mongo-mongodb -- mongo db.createUser({user:"admin",pwd:"123456",roles:[{role:"root",db:"admin"}]})'


  

Ответ №1:

Разве вам не нужно запускать command с --eval ?

 kubectl exec $mongoPodName -c mongo-mongodb -- mongo --eval 'db.createUser({user:"admin",pwd:"123456",roles:[{role:"root",db:"admin"}]})'

  

Комментарии:

1. Я пытаюсь —eval для этой команды « kubectl exec $mongoPodName -c mongo-mongodb — mongo —eval ‘использовать MyTest’ « . Выдает ошибку: « 2020-08-18T22: 31:53.745 0000 E ЗАПРОС [js] неперехваченное исключение: ошибка синтаксиса: неожиданный токен: идентификатор: @ (оценка оболочки): 1: 4 «

2. Мне нужно создать mongodbs с пользователем и ролями из файлов *.ini, поэтому я должен запускать многострочные команды mongo в моем sample.sh файл, но у меня много ошибок.

3. Боюсь, я не слишком знаком с mongodb, но вы должны иметь возможность выполнить несколько команд в файле .js. Пожалуйста, посмотрите эту ссылку: docs.mongodb.com/manual/reference/program/mongo /…

4. Здесь нам нужно использовать двойные кавычки («) вместо одинарных кавычек. Я тестировал в обоих случаях, и тот, который работает, — с одинарными кавычками. kubectl exec $mongoPodName -c mongo-mongodb -- mongo --eval "db.createUser({user:"admin",pwd:"123456",roles:[{role:"root",db:"admin"}]});"