特定の文字列(たとえば)で区切られた複数行のパスワードクエリを含むパスワードスクリプトがあります-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
こんな!静かなデータ損失!