我有一个密码脚本,其中包含由特定字符串(例如 )分隔的多行密码查询-delmiter-
。
我想将每个段回显到容器中的 cypher shell 中,并获取发送到 cypher shell 中的查询和 shell 的输出。
当使用虚拟代码时,它会是这样的
#!/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
哎呀!无声数据丢失!