BASH:パラメータに従って関数プロンプトを変更できますか?

BASH:パラメータに従って関数プロンプトを変更できますか?

引数に従ってユーザー入力プロンプトを変更する関数を作成したいと思います。

my_fucntiondb_hostユーザーに入力を要求したら、1つのパラメータを使用します。

function provide_host () {
    echo "Enter NAME OR IP OF ${function_param1} DATBASE HOST: "
    read global function_param1_db_host
}

だから私は関数を呼び出すと

function provide_host (primary)

次のようにプロンプ​​トが必要です。

echo "Enter NAME OR IP OF PRIMARY DATBASE HOST: "

しかし、私が使うなら

function provide_host (secondary)

それは尋ねる

 "Enter NAME OR IP OF SECONDARY DATBASE HOST: "

私の考えでは、これにステートメントを使用する必要があると思いますifが、関数パラメータを変数として使用して、関数内でユーザーにメッセージを表示できるかどうかはわかりません。

ベストアンサー1

$1以下を使用して最初のパラメータを取得できます。

function provide_host () {
    echo "Enter NAME OR IP OF $1 DATBASE HOST: "
    read global function_param1_db_host
}

または大文字に変換します。

function provide_host () {
    echo "Enter NAME OR IP OF ${1^^} DATBASE HOST: "
    read global function_param1_db_host
}

次に、次のように関数を呼び出します。

provide_host primary
provide_host secondary

しかし私は少し異なっている。グローバル変数を設定する代わりに、stderrにプロンプ​​トを表示し、stdoutの関数からIPを返します。

function provide_host() {
    read -p "Enter NAME OR IP OF ${1^^} DATABASE HOST: " host >&2
    printf "%s" "$host"
}

primary_db_host=$(provide_host primary)
secondary_db_host=$(provide_host secondary)

おすすめ記事