Można użyć składni heredoc.
#! /bin/sh
mongo <<EOF
use admin
db.shutdownServer()
quit()
exit
Wyłącza składnię heredoc generuje ostrzeżenie, gdy brakuje EOF na końcu skryptu bash. To jest wersja skryptu bash.
#! /bin/bash
mongo <<EOF
use admin
db.shutdownServer()
quit()
EOF
Oto wyniki, myślę, że to jest to, czego się spodziewałeś.
MongoDB shell version: 2.4.14
connecting to: test
switched to db admin
Wed Jun 24 17:07:23.808 DBClientCursor::init call() failed
server should be down...
Wed Jun 24 17:07:23.810 trying reconnect to 127.0.0.1:27017
Wed Jun 24 17:07:23.810 reconnect 127.0.0.1:27017 ok
Wed Jun 24 17:07:23.812 Socket recv() errno:104 Connection reset by peer 127.0.0.1:27017
Wed Jun 24 17:07:23.812 SocketException: remote: 127.0.0.1:27017 error: 9001 socket exception [RECV_ERROR] server [127.0.0.1:27017]
Wed Jun 24 17:07:23.812 DBClientCursor::init call() failed
, ale można umieścić więcej niż jedno polecenie w eval? – MoienGK
@MoienGK Tak, możesz umieścić dłuższy kod JavaScript w '--eval'. Oddziel wiele instrukcji za pomocą średników, jak w moim drugim przykładzie. – Stennie
nieoczekiwany błąd: "shutdownServer nie powiodło się: zamknięcie musi zostać uruchomione z localhost przy uruchomieniu db bez auth" – MoienGK