sql >> Base de Datos >  >> NoSQL >> MongoDB

Cómo obtener la salida de mongo shell (tres puntos) para un comando no terminado

Su código no incluye nada que escriba en la entrada estándar de su proceso secundario, por lo que me sorprendería si obtuviera los puntos suspensivos que indican un comando incompleto cuando, de hecho, no envía ningún comando, ya sea incompleto o no.

Dicho esto, muchas utilidades de línea de comandos se comportan de manera diferente cuando descubren un terminal real conectado a su entrada estándar/salida estándar. P.ej. git log paginará los resultados cuando lo ejecute directamente, pero no cuando canalice los resultados a algún otro comando como git log | cat así que este también puede ser el caso aquí.

Esto también puede tener que ver con el almacenamiento en búfer:si su transmisión tiene un búfer de línea, no verá ninguna línea que no termine con una nueva línea de inmediato.

La verdadera pregunta es:¿ves el > ¿inmediato? ¿Envías algún comando al shell mongo?

Escribir herramientas CLI interactivas puede ser complicado. P.ej. mira lo que tuve que hacer para probar un programa interactivo muy simple aquí:

Tuve que crear dos canalizaciones con nombre, asegurarme de que stdin, stderr y stdout no estén almacenados en búfer, y luego usar algunos otros trucos para que funcione. Es un script de shell, pero es solo para mostrarle un ejemplo.