2016-07-29 3 views
1

У меня есть сценарий, который засекает мою базу данных, но я хочу только перенаправить stderr пользователю.Перенаправить ошибку оболочки mongo для вывода

Я пытаюсь это:

echo "Seeding pokemon" 
mongo mongodb_1:27017/pokemon pokemon.js > /dev/null 2>&1 

Но я не получаю ошибку output.If я удалить переадресацию, выходы ошибок в моей консоли.

ответ

1

Mongo Shell в настоящее время не поддерживает отдельный выходной поток для ошибок.

Может подписаться на SERVER-18643, чтобы получить уведомление после его внедрения.

Обход предложил в приведенном выше билете является помечать выход внутри Монго Shell:

... 
print("<STDOUT>") 
print(multiline_json) 
print("</STDOUT>") 
print("<STDERR>") 
print(multiline_json) 
print("</STDERR>") 
... 

Затем вы можете перенаправлять на правильный выходной поток с помощью следующего сценария:

#!/bin/bash 
COMMAND="mongo <args>" 
OUTPUT=$(${COMMAND}) 

function STDERR { 
    cat - 1>&2 
} 

function STDFILE { 
    if [ -z "$1" ]; then 
    return 
    fi 
    cat - >> $1 
} 

WRITE_ERR=0; 
for line in $OUTPUT; do 
    if [[ "$line" == "<STDERR>"* ]]; then 
    WRITE_ERR=1 
    continue 
    elif [[ "$line" == "</STDERR>"* ]]; then 
    WRITE_ERR=0 
    continue 
    fi 
    if [ "$WRITE_ERR" -eq "1" ]; then 
    printf "%s\n" "$line" | STDERR 
    else 
    printf "%s\n" "$line" 
    fi 
done 
Смежные вопросы