我正在尝试将手动运行的命令转换为 Makefile 目标,但出现与我的使用相关的错误cat
。我想我正在尝试打开文件“cat”而不是cat
'ing 实际文件...
queries.sql : clean
ls ./sql/**/*.sql | sort -V | while read fn ; do (cat "${fn}"; echo; echo) >> queries.sql; done
clean :
rm -f queries.sql;
运行ls
命令本身效果很好,但是使用 Makefile 我就得到了
cat: : No such file or directory
cat: : No such file or directory
cat: : No such file or directory
cat: : No such file or directory
cat: : No such file or directory
cat: : No such file or directory
...
我在这方面是个新手,所以这可能很简单。另外,我相信有一种方法可以做到这一点,而无需cat
?
Edit:
哦,sql 脚本以日期为前缀,即 2020-01-02,所以我想保持文件名的排序,如ls -V
.
这可能是最近关于 make 最常被问到的问题。
The $
角色是特殊制作的,所以如果你想传递一个$
到外壳你必须转义它,通过使用$$
.
So cat "${fn}"
必须写cat "$${fn}"
在你的食谱中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)