Ist es möglich programmgesteuert einige repl (z. B. mongo
) einzugeben und programmgesteuert damit zu interagieren? Das heißt, können Sie dies tun programmatisch:Programmatisch Befehle an eine interaktive REPL von Bash senden?
$ mongo
MongoDB shell version: 2.4.8
connecting to: test
> db.collections
test.collections
> exit
bye
Alles, was tut, ist:
- Anmeldung zum REPL mit dem
mongo
Befehl. Ich weiß, dass es irgendwie möglich ist, dies zu tun, ich habe es bis create interactive REPL's in the Node.js world getan. Es wäre hilfreich zu wissen, wie man das direkt in bash macht. - Einmal eingeloggt, tippte ich
db.collections
, nur die REPL erkunden. Diese SO Frage fragt, können Sie diese programmgesteuert tun? Wie können Sie vielleicht (a) einen Kindprozess/REPL aus einem Bash-Skript erstellen und dann (b) beliebige Nachrichten wie diesedb.collections
senden, die sie auswertet. (Und können Sie die Antwort/Ausgabe zurück erhalten). - Programmgesteuertes Abmelden von der REPL.
Ist das möglich?
Suche hier nach Qs mit "Here-Docs" (abgegrenzt durch '<< EOS .... cmds ... EOS" (Leider kann 'EOS' eine beliebige Zeichenfolge sein, manchmal siehst du' _ _ 'oder' << EOD', oder << ... '(ein Dutzend anderer Dinge.). Konzentrieren Sie sich auf" Here-Documents "und machen Sie kleine Tests, um zu sehen, ob' Mongo' von ihnen lesen kann 'Viel Glück. – shellter
als Shelter, sagte, verwenden Sie [hier Dokument] (http://mywiki.wooledge.org/HereDocument). Wenn das nicht funktioniert (einige Befehle nicht umgeleiteten' stdin' erlauben), gehen Sie für [ 'expect'] (http://www.unix.com/man-page/all/1/expect/) basierte Lösung – anishsane
Vielen Dank, ich werde diese überprüfen. –