MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Como obter a saída do shell mongo (três pontos) para o comando não terminado


Seu código não inclui nada que grave no stdin do seu processo filho, então eu ficaria surpreso se você obtivesse as reticências que indicam o comando incompleto quando, na verdade, você não envia nenhum comando - incompleto ou não.

Dito isto, muitos utilitários de linha de comando se comportam de maneira diferente quando descobrem um terminal real conectado ao seu stdin/stdout. Por exemplo. git log irá paginar os resultados quando você executá-lo diretamente, mas não quando você canalizar os resultados para algum outro comando como git log | cat então este também pode ser o caso aqui.

Isso também pode ter a ver com o buffer - se o seu fluxo estiver em buffer de linha, você não verá nenhuma linha que não seja terminada com uma nova linha imediatamente.

A verdadeira questão é:você vê o > pronto? Você envia algum comando para o shell do mongo?

A criação de scripts de ferramentas interativas da CLI pode ser complicada. Por exemplo. veja o que eu tive que fazer para testar um programa interativo bem simples aqui:

Eu tive que criar dois pipes nomeados, certificar-se de que stdin, stderr e stdout não são armazenados em buffer e, em seguida, usar alguns outros truques para fazê-lo funcionar. É um script de shell, mas é apenas para mostrar um exemplo.