我想构造一个函数,该函数将根据其参数更改其用户输入提示。
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)