2017-01-14 4 views
0

Ich schrieb ein Shell-Skript, um einen Daten-Dump von Datensätzen zu erstellen, die gestern mit dem mongoexport-Befehl aktualisiert wurden.Mongoexport Shell-Skript - Fehler in der Abfrage

yesterday=$(date -d 'yesterday 00:00:00' '+%s'000) 
today=$(date -d 'today 00:00:00' '+%s'000) 
query="'{\"updated_at\":{\$gte:new Date(${yesterday}),\$lte:new Date(${today})}}'" 
echo ${query} 

mongoexport -h $HOST -d $DOC -c $COL_NAME -u $USER -p $PWD -q ${query} -o $fileName 

Nach Abfrage hinzufügen, wenn ich den Shell-Skript laufen bekomme ich unter Fehlern in der Konsole

'{"updated_at":{$gte:new Date(1484287200000),$lte:new Date(1484373600000)}}' 
too many positional arguments: [Date(1484287200000),$lte:new Date(1484373600000)}}'] 
try 'mongoexport --help' for more information 

Wenn ich diese Abfrage in der Kommandozeile ausführen es richtig funktioniert. Kann mir jemand bitte sagen, warum ist dieser Fehler beim Ausführen in Shell-Skript?

Dies funktioniert in der Befehlszeile.

$mongoexport -h <<HOST>> -d <<DOC>> -c <<COL> -u <<UN>> -p <<PWD>> -q '{"updated_at":{"$gte":new Date(1484287200000),"$lte":new Date(1484373600000)}}' 

Antwort

0

Es gibt eine Faustregel gilt: in bash: wenn Sie eine Variable verwenden, setzen Sie es immer mit doppelten Anführungszeichen. Es gibt Ausnahmen, aber sie sind selten.

mongoexport -h "$HOST" -d "$DOC" -c "$COL_NAME" -u "$USER" -p "$PWD" -q "${query}" -o "$fileName" 
+0

Danke für die Antwort. Wenn ich im Shell-Skript mit doppelten Anführungszeichen versuchte, erhalte ich einen Fehler. ''{" updated_at ": {$ gte: neues Datum (1484287200000), $ lte: neues Datum (1484373600000)}}' 2017-01-14T18: 02: 22.557-0600 \t Fehler beim Validieren der Einstellungen: query '[39 123 34 117 112 100 97 116 101 100 95 97 116 34 58 123 36 103 116 101 58 110 101 119 32 68 97 116 101 40 49 52 56 52 50 56 55 50 48 48 48 48 48 41 44 36 108 116 101 58 110 101 119 32 68 97 116 101 40 49 52 56 52 51 55 51 54 48 48 48 48 48 41 125 125 39] 'ist nicht gültig JSON: json: kann den String in den Go-Wert des Typs map [string] interface {} ' – user1637487

+0

nicht entpacken @ user1637487 Ich weiß nicht, Mongo, aber ich glaube, die umliegenden einfachen Anführungszeichen, in Ihrer Definition von 'query' sollte entfernt werden. Behalte nur die Anführungszeichen: 'query =" {...} "' – xhienne