我是Makefile的新手。我需要为postgres终端自动创建用户。
我尝试了这个例子但它对我不起作用:
createuser:
@echo "$(OK_COLOR)==> create user$(NO_COLOR)"
@psql mydbdevelopmentname
@create user myusername;
@/q
@echo "$(OK_COLOR)==> Done$(NO_COLOR)"
@create user myusername;
和@/q
都无效。
当我运行make createuser
并从postgres终端手动退出时,我收到此错误:
/bin/sh: create: command not found
make: *** [createuser] Error 127
答案 0 :(得分:1)
调试makefile时,@
修饰符无用,因为它在执行前不再显示这些命令。
我怀疑您确实想将create user myusername
传递到psql
行,但是您将其作为单独的命令编写。您需要确保psql
看到它:
psql -c "create user myusername" mydbdevelopmentname
不要忘记将目标声明为.PHONY
的依赖关系。
我顺便提一下,Make通常是一个很糟糕的选择,可以用作脚本语言 - 它可以更好地从依赖项中创建目标,就像它的设计目标一样。这种事情更适合Bash或Python等语言。