ArangoDB 값을 bash 스크립트로 내보내기

ArangoDB 값을 bash 스크립트로 내보내기

주어진 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 of arangosh또는 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대체 항목으로 전달합니다. 이 스크립트에 대해 내가 이 스크립트에 제공하는 모든 세트가 동일한 문자를 가지기를 원한다는 점을 고려하면 이것이 트릭을 수행해야 합니다(아주 제한적임).

관련 정보