Функция Bash используется с командой и дополнительным параметром

Я хотел бы изменить свои повторяющиеся строки в небольшую функцию и избавиться от ненужного кода. Это может быть fuction с 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.
0
задан 6 April 2020 в 16:18

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"'
1
ответ дан 25 April 2020 в 10:54

Другие вопросы по тегам:

Похожие вопросы: