与えられたarangoコレクション内のレコード/文書の数を数える必要があるbashスクリプトがあります。これは非常に簡単に見え、次のarangosh
呼び出しを使用しました。
records=$(docker exec -it arango arangosh --javascript.execute scripts/getCount.js $collection --server.password '')
次に、次のスクリプトを実行します。
#!/usr/bin/arangosh --javascript.execute
var collection = ARGUMENTS[0];
var doc = db[collection];
var c = doc.count();
print(c);
これはうまくいくようですが、echo $records
正しい値を取得すると太字で表示されます。これは他の読み取り問題を引き起こすので、呼び出しをリダイレクトしてdocker exec
次のcat -v
出力を取得します。
^[[1m#####^[[0m^M
####は私が記録した値であり、正確です。 out ofarangosh
または out of 値を正しく印刷するにはdocker exec
?それとも私の値から隠されたANSI文字を削除する唯一の方法ですか?
修正する:
docker exec -it arango arangosh
私はすぐにジャンプしてコマンドを試すことができました。db._collection('my_collection').count()
これは、隠された文字が含まれていることを意味する太い値を返します(未定義arangosh
のcat
ため、100%確認できません)。
もしそうなら、問題はプレーンテキストとしてエクスポートできるのか、スクリプトがsed
応答を受け取った後にこれらの文字を置き換える必要があるのかということです。
答え1
それでも良い答えが欲しいのですが、次のことで必要なものを得ることができました。
imported=`docker exec -it arango arangosh --javascript.execute scripts/getRecords.js $collection --server.password '' | cat -v | sed 's/\(\^\[\[1m\)//g;s/\(\^\[\[0m^M\)//g'`
これはdockerの詳細な出力を代替sed
項目として渡します。このスクリプトについて、私がこのスクリプトに提供するすべてのセットが同じ文字を持つことを望んでいることを考えると、これはトリックを実行する必要があります(非常に制限的です)。