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