'No such file or directory' 当 运行 Makefile 脚本

'No such file or directory' when running Makefile script

文件夹结构设置如下:

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 命令,所以我不知道为什么会出现错误。

我将从简单的步骤开始,以消除潜在问题

.
├── 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 {} \;