与命令和附加参数一起使用的 Bash 函数

与命令和附加参数一起使用的 Bash 函数

我想将重复的行更改为小函数并删除不必要的代码。它可以是带有dialog命令的函数,该命令具有相同的参数,但--msgbox始终不同。如何以正确的方式组合字符串并执行函数?

只要它看起来像这样:

function DIALOG_OK() {
    local function_name="${FUNCNAME[1]}"
    local msg="${1}"
    dialog --title "Fist boot detected !" --backtitle "HeadlineHere" ${msg}
}

执行:

DIALOG_OK --msgbox "\nFist boot configuration wizard detected.\nPlease choose OK to continue.\n" 8 40

输出:

Error: Expected at least 3 tokens for --msgbox, have 0.

答案1

你有msg="${1}",但$1只是第一的函数调用的参数DIALOG_OK就是--msgbox

使用"$@"并且不要输入中间变量,因为这样您的报价会出现问题:

function DIALOG_OK() {
    local function_name="${FUNCNAME[1]}"
    dialog --title "Fist boot detected !" --backtitle "HeadlineHere" "$@"
}

或者在你的情况下可能alias比函数更好:

alias DIALOG_OK='dialog --title "Fist boot detected !" --backtitle "HeadlineHere"'

相关内容