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)

相关内容