include .env
help:
@echo ""
@echo "usage: make COMMAND"
@echo ""
@echo "Commands:"
@echo " mysql-create-db Create mysql database"
mysql-create-db:
@docker-compose exec -T mysqldb mysql -u"$(MYSQL_USER)" -p"$(MYSQL_PASSWORD)" -e \'create database abcd\'
它也会导致简单的" show databases"查询也。
我不确定为什么它不起作用
答案 0 :(得分:0)
在SO上提出问题的第一条规则:始终包括您输入的命令以及您获得的输出,剪切并粘贴到您的问题中。如果输出太长而且要包含杂乱,那么至少总是包括你得到的实际错误或不正确的输出,以及它之前和之后的几行用于上下文。
编写makefile的第一条规则:从不添加@
直到你的makefile完全运行。通过隐藏重要细节,你可以在脚下射击自己。或者,请阅读http://make.mad-scientist.net/managing-recipe-echoing/以了解处理此问题的另一种方式。
编写makefile的第二条规则:始终确保在尝试将其添加到makefile配方之前键入shell命令行时命令有效。
我对码头工作者了解不多,但我怀疑这是一个引用shell的问题而不是制造问题......我怀疑这个命令如果切入并粘贴到一个问题上就不会起作用shell提示。那是因为我认为你的引用是错误的。
试试这个(注意mysql命令的不同引用):
mysql-create-db:
@docker-compose exec -T mysqldb mysql -u"$(MYSQL_USER)" -p"$(MYSQL_PASSWORD)" -e "'create database abcd'"
这可以确保最终命令是一个单词,包括引号。