특정 문자열(예:)로 구분된 여러 줄의 비밀번호 쿼리가 포함된 비밀번호 스크립트가 있습니다 -delmiter-
.
각 세그먼트를 컨테이너의 암호 셸에 에코하고 쿼리의 출력과 암호 셸로 전송된 셸을 가져오고 싶습니다.
더미 코드를 사용하면 다음과 같습니다.
#!/bin/bash
while read $multilinesegment
do
echo $multilinesegment
docker exec -i neo4j_container /bin/cypher-shell -u user -p password --format=verbose
done <<< import.cypher #-delimitedby'-delimiter-'
스크립트를 이러한 조각으로 분할하고 루프를 실행하려면 어떻게 해야 합니까?
편집: 내 것은 import.cypher
다음과 같습니다:
match (a:Person)-[:Is_maried_to]-(b)
set b.last_name=a.last_name
return a,b;
-delimiter-
match (a:Person)-[:Is_maried_to]-(b)
set b.last_name=a.last_name
return a,b;
-delimiter-
match (a:Person)-[:Is_maried_to]-(b)
set b.last_name=a.last_name
return a,b;
-delimiter-
match (a:Person)-[:Is_maried_to]-(b)
set b.last_name=a.last_name
return a,b;
-delimiter-
답변1
-delimiter-
빈 줄이어도 되나요 ?
match (a:Person)-[:Is_maried_to]-(b)
set b.last_name=a.last_name
return a,b;
match (a:Person)-[:Is_maried_to]-(b)
set b.last_name=a.last_name
return a,b;
...
만일이 경우라면
awk 'BEGIN {
RS=""
command = "docker exec -i neo4j_container /bin/cypher-shell -u user -p password --format=verbose"
} {
print | command
close command
}' import.cypher
그러면 라인을 읽는 데 (느리고) 나쁜 루프가 필요하지 않습니다 while read
. 나쁜 점은 마지막 줄에 개행 문자가 없으면 그 줄은 다음과 같다는 것입니다.
(echo one; echo -n two) | while read l; do echo $l; done
이런! 조용한 데이터 손실!