文件夹结构设置如下:
Main directory
\_ keyspaces
\_ f1
\_ bootstrap.cql
\_ anotherFolder
\_ 0001-something.cql
\_ f2
\_ bootstrap.cql
\_ anotherFolder
\_ 0001-something.cql
\_ 0002-moreSomething.cql
我在主目录中有一个Makefile,其中包含以下代码:
do_stuff:
for ks in keyspaces/*; do \
cqlsh -f "$${ks}/bootstrap.cql"; \
done
当我从主终端内的终端(使用iTerm2)运行make do_stuff
时,出现错误,说明如下:
Can't open 'keyspaces/f1/bootstrap.cql': [Errno 2] No such file or directory: 'keyspaces/f1/bootstrap.cql'
command terminated with exit code 1
Can't open 'keyspaces/f2/bootstrap.cql': [Errno 2] No such file or directory: 'keyspaces/f2/bootstrap.cql'
command terminated with exit code 1
make: *** [do_stuff] Error 1
但是,如果我在终端中运行它:cat keyspaces/f1/bootstrap.sql
我打印出该文件的内容,所以路径是正确的,它确实存在,但是cqlsh无法识别它?
查看the Cassandra/cqlsh docs,看起来我正在使用-f
命令,所以我不知道为什么我会收到错误。
答案 0 :(得分:1)
我会从简单的步骤开始,以消除潜在的问题
.
├── Makefile
└── keyspaces
├── f1
│ └── bootstrap.cql
└── f2
└── bootstrap.cql
使用以下Makefile,工作正常
do_stuff:
for ks in keyspaces/*; do \
cat "$${ks}/bootstrap.cql"; \
done
执行
make
for ks in keyspaces/*; do \
cat "${ks}/bootstrap.cql"; \
done
a
b
仔细检查,您可以在Main directory
内拨打
cqlsh -f "keyspaces/f1/bootstrap.cql"
也许你可以将其委托给find
?
do_stuff:
find `pwd` -name "*.cql" -exec cat {} \;