我想将重复的行更改为小函数并删除不必要的代码。它可以是带有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"'