1
我有一個腳本,種子我的數據庫,但我只想將stderr重定向到用戶。重定向mongo shell的錯誤輸出
我想這一點:
echo "Seeding pokemon"
mongo mongodb_1:27017/pokemon pokemon.js > /dev/null 2>&1
但我沒有收到錯誤output.If我刪除了重定向,錯誤輸出到我的控制檯。
我有一個腳本,種子我的數據庫,但我只想將stderr重定向到用戶。重定向mongo shell的錯誤輸出
我想這一點:
echo "Seeding pokemon"
mongo mongodb_1:27017/pokemon pokemon.js > /dev/null 2>&1
但我沒有收到錯誤output.If我刪除了重定向,錯誤輸出到我的控制檯。
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>")
...
然後你可以使用下面的腳本重定向到正確的輸出流