MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Come ottenere l'output della shell mongo (tre punti) per un comando non terminato

Il tuo codice non include nulla che scriva nello stdin del tuo processo figlio, quindi sarei sorpreso se avessi i puntini di sospensione che indicano un comando incompleto quando in realtà non invii alcun comando, incompleto o meno.

Detto questo, molte utilità della riga di comando si comportano in modo diverso quando scoprono un terminale reale collegato al loro stdin/stdout. Per esempio. git log visualizzerà i risultati quando lo esegui direttamente ma non quando esegui il pipe dei risultati su qualche altro comando come git log | cat quindi questo potrebbe essere anche il caso qui.

Questo può anche avere a che fare con il buffering:se il tuo stream è con buffer di riga, non vedrai immediatamente alcuna riga che non sia terminata con una nuova riga.

La vera domanda è:vedi il > richiesta? Invii qualche comando alla mongo shell?

Lo scripting di strumenti CLI interattivi può essere complicato. Per esempio. guarda cosa dovevo fare per testare un programma interattivo molto semplice qui:

Ho dovuto creare due pipe con nome, assicurarmi che stdin, stderr e stdout non fossero bufferizzate e quindi utilizzare altri trucchi per farlo funzionare. È uno script di shell ma serve solo per mostrarti un esempio.