2016-07-29 114 views
1

我有一個腳本,種子我的數據庫,但我只想將stderr重定向到用戶。重定向mongo shell的錯誤輸出

我想這一點:

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

但我沒有收到錯誤output.If我刪除了重定向,錯誤輸出到我的控制檯。

回答

1

Mongo Shell當前不支持單獨的輸出流以查找錯誤。

一旦實施,可以訂閱SERVER-18643以獲得通知。

解決方法在上述建議的票是來標記蒙戈外殼內的輸出:

#!/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 

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

然後你可以使用下面的腳本重定向到正確的輸出流