引数に従ってユーザー入力プロンプトを変更する関数を作成したいと思います。
my_fucntion
db_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)