将 ArangoDB 值导出到 bash 脚本

将 ArangoDB 值导出到 bash 脚本

我有一个 bash 脚本,需要计算给定 arango 集合中存在的记录/文档的数量。这看起来很简单,我使用了以下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 execcat -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替换。考虑到对于这个脚本,我希望我提供给这个脚本的所有集合的字符都相同,这应该可以解决问题(只是非常有限)。

相关内容