#!/bin/bash
function dialog_menu()
{
arr["$4"]="$(dialog --clear --backtitle "Archlinux Installer" --title "$1" --menu $2 10 60 5 $3 --output-fd 1)"
}
ARRAY[0]="\"sda\""
ARRAY[1]="\"The main disk\""
dialog_menu "Disk Selection" "Please, choose where to install Archlinux" "$(echo ${ARRAY[*]})" DISK_SELECTION
echo "${arr[DISK_SELECTION]}"
Задача здесь - получить диалог --menu для чтения моего массива. Но почему-то я не могу найти способ заставить его работать.Массив как параметр функции диалога в bash
EDIT 1:
Я попытался изменить массив array=('sda' 'super cool' 'sdb' 'less cool')
и подмены вне функция работает с "${array[@]}"
. Но как только он находится в функции, он больше не работает.
Я предлагаю вам сделать третий аргумент ('$ 3') на' dialog_menu' будет 'DISK_SELECTION', тогда все аргументы из' $ 4' будут представлять собой контент 'ARRAY'. Итак, 'dialog_menu" Выбор диска "" Пожалуйста ... "DISK_SELECTION" $ {ARRAY [@]} "'. Я также хотел бы предложить вам сократить имена переменных (т. Е. 'Array' вместо' ARRAY' или любое другое имя с нижней обложкой), так как переменные среды соглашения и внутренние переменные оболочки полностью капитализируются. Поскольку имена переменных чувствительны к регистру, это соглашение позволяет избежать случайного переопределения экологических и внутренних переменных. –
[Аргументы] (http://mywiki.wooledge.org/Arguments) - отличный источник для дальнейшего изучения и изучения :-) –