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>")
...
然后你可以使用下面的脚本重定向到正确的输出流