はじめに
Laravelで使ってるDBに対して、BashでもDB接続して操作する必要があった。
設定を一括管理するためにもBashでLaravelの.envの設定を読み込むようにする。
DBはPostgreSQL11です。
内容
BashでPostgreSQLに接続 → データを取得 → 出力
#!/bin/bash
# .envから読み込み
DB_HOST=(`cat ../.env | grep DB_HOST | sed -e 's/DB_HOST=//'`)
DB_PORT=(`cat ../.env | grep DB_PORT | sed -e 's/DB_PORT=//'`)
DB_DATABASE=(`cat ../.env | grep DB_DATABASE | sed -e 's/DB_DATABASE=//'`)
DB_USERNAME=(`cat ../.env | grep DB_USERNAME | sed -e 's/DB_USERNAME=//'`)
DB_PASSWORD=(`cat ../.env | grep DB_PASSWORD | sed -e 's/DB_PASSWORD=//'`)
# PostgreSQLに接続
response=(`PGPASSWORD=${DB_PASSWORD_BO} /usr/pgsql-11/bin/psql -U ${DB_USERNAME_BO} -h ${DB_HOST_BO} -p ${DB_PORT_BO} ${DB_DATABASE_BO} -t << EOF
SELECT * FROM tbl;
EOF
`)
# データがとれているか確認
for ((i = 0; i < ${#response[@]}; i++)) {
echo ${response[$i]}
}
ちなみにですが、ヒアドキュメントを使ってPostgreSQLに接続する際の
パスワード設定の仕方を探すのに少し苦労しました。
おわりに
上の例の"DB_HOST"や"DB_PORT"の部分を.envで欲しい変数名に変えれば任意のところの値が取れますよー