スクリプトシェルのPostgres

スクリプトシェルのPostgres

こんにちは、所有者と一緒にデータベースを作成しようとしています!デフォルトでは、所有者はpostgresであり、ユーザーがデータベースを作成するときにそれを変更したいと思います。

read -p "Enter owner database name : " $owner
read -p "Enter database name : " $my_db
sudo -i -u postgres psql -c 'CREATE DATABASE $my_db OWNER $owner'

この行をテストしましたが、データベース名が「owner」として作成されました。

誰でも私を助けることができますか? ?

ベストアンサー1

あなたのコードスニペットには2つの問題があります。

  1. $owner存在する

    read -p "Enter owner database name : " $owner
    

    拡大する変数ownerでなければなりません。

    read -p "Enter owner database name : " owner
    

    いいえ。$$my_db

  2. 一重引用符

    sudo -i -u postgres psql -c 'CREATE DATABASE $my_db OWNER $owner'
    

    $my_dbとの拡張を防ぎます$owner。しなければならない

    sudo -i -u postgres psql -c "CREATE DATABASE $my_db OWNER $owner"
    

    (一重引用符の代わりに二重引用符を使用することに注意してください)完全な説明は次のとおりです。シェルの「...」、「...」、$'...'、および$"..."引用符の違いは何ですか?

おすすめ記事