![구분 기호까지 스크립트를 읽고 파이프된 명령의 결과를 에코합니다.](https://linux55.com/image/123819/%EA%B5%AC%EB%B6%84%20%EA%B8%B0%ED%98%B8%EA%B9%8C%EC%A7%80%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EB%A5%BC%20%EC%9D%BD%EA%B3%A0%20%ED%8C%8C%EC%9D%B4%ED%94%84%EB%90%9C%20%EB%AA%85%EB%A0%B9%EC%9D%98%20%EA%B2%B0%EA%B3%BC%EB%A5%BC%20%EC%97%90%EC%BD%94%ED%95%A9%EB%8B%88%EB%8B%A4..png)
특정 문자열(예:)로 구분된 여러 줄의 비밀번호 쿼리가 포함된 비밀번호 스크립트가 있습니다 -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
이런! 조용한 데이터 손실!