【发布时间】:2023-04-10 00:38:01
【问题描述】:
#!/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]}"
这里的挑战是让 dialog --menu 读取我的数组。但由于某种原因,我找不到让它工作的方法。
编辑 1:
我尝试将数组更改为 array=('sda' 'super cool' 'sdb' 'less cool') 并且函数外部的替换适用于 "${array[@]}" 。但是一旦它在函数中,它就不再起作用了。
【问题讨论】:
-
我建议你将
dialog_menu的第三个参数($3)设为DISK_SELECTION,那么$4以上的所有参数都是ARRAY的内容。所以,dialog_menu "Disk selection" "Please..." DISK_SELECTION "${ARRAY[@]}"。我还想建议您将变量名称小写(即array而不是ARRAY或任何其他小写名称),因为按照惯例,环境变量和内部shell 变量完全大写。由于变量名区分大小写,因此此约定可避免意外覆盖环境变量和内部变量。 -
Arguments 是您进一步阅读和学习的绝佳来源:-)
标签: arrays bash function parameters dialog