必要に応じてデータベースを破棄するなど、データベースを再作成する目的で、Makefile に次のものがあります。それは動作しません。
.PHONY: rebuilddb
exists=$(psql postgres --tuples-only --no-align --command "SELECT 1 FROM pg_database WHERE datname='the_db'")
if [ $(exists) -eq 1 ]; then
dropdb the_db
fi
createdb -E UTF8 the_db
実行すると、エラーが発生します。
$ make rebuilddb
exists=
if [ -eq 1 ]; then
/bin/sh: -c: line 1: syntax error: unexpected end of file
make: *** [rebuilddb_postgres] Error 2
なぜこれが間違っているのですか?私が知る限り、有効な Bash のように見えますか? Makefile でこれを行う場合、特別な考慮事項はありますか?
アップデート:
答えを使用して、作業バージョンにたどり着きました:
.PHONY: rebuilddb
exists=$$(psql postgres --tuples-only --no-align --command "SELECT 1 FROM pg_database WHERE datname='the_db'"); \
if [ "$$exists" == "1" ]; then \
dropdb the_db; \
fi;
createdb -E UTF8 the_db