2016-11-30 31 views
-1

私はMakefileで新しいです。 postgres端末のユーザを自動作成する必要があります。LINUX GNU Makefileに新しいユーザーPostgres DBを作成します。

私はこの例を試してみましたが、それは私のために動作しませんでした:

createuser: 
    @echo "$(OK_COLOR)==> create user$(NO_COLOR)" 
    @psql mydbdevelopmentname 
    @create user myusername; 
    @/q 
    @echo "$(OK_COLOR)==> Done$(NO_COLOR)" 

@create user myusername;@/q作品どちらを。

私はPostgresの端末から\ qを使って手動でmake createuserし、終了を実行したとき、私はこのエラーが表示されます。

/bin/sh: create: command not found 
make: *** [createuser] Error 127 

答えて

1

makefileをデバッグするとき、それはもはやそれらを実行する前にこれらのコマンドを示して、@修飾子は、役に立たないではありません。

実際にcreate user myusernamepsql行に渡したいと思っていましたが、別のコマンドとして書きました。あなたはpsqlがそれを見ていることを確認する必要があります。

psql -c "create user myusername" mydbdevelopmentname 

.PHONYの依存関係として、あなたの目標を宣言することを忘れないでください。

私は、Makeがスクリプト言語として使用することは一般的に貧しい選択であることに注意してください。それは、その依存関係からターゲットを作成する方がはるかに優れています。この種のものは、BashやPythonなどの言語に適しています。

+0

psql:致命的な:ロール "create user myusername"が存在しません make:*** [createuser] Error 2' – Skipoura

+1

これをMySQLと混ぜると、 '-c'を意味します。 '-e'ではありません(あなたが気にしていれば、manページがあなたを示していたはずです)。 –

+0

ありがとうございます!出来た! – Skipoura

関連する問題