Bash

BASH:是否可以根據其參數更改功能提示?

  • May 31, 2022

我想建構一個函式,該函式將根據其參數更改其使用者輸入提示。

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獲取第一個參數:

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)

引用自:https://unix.stackexchange.com/questions/704471