Bash

2016-04-07 25 views
1
#!/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]}" 

Bir iletişim işlevinin bir parametresi olarak dizi Buradaki zorluk dizimi okumak için dialog --menu almaktır. Ama bir nedenden dolayı çalışmasını sağlamak için bir yol bulamıyorum.Bash

DÜZENLEME 1:

I fonksiyonu "${array[@]}" ile çalışır dışında array=('sda' 'super cool' 'sdb' 'less cool') ve ikameye dizi değiştirme çalıştı. Ama bir kez fonksiyonda, artık işe yaramıyor.

+0

seni yapmak önermek biraz daha iyi okunmasını sağlayan kod modifiye dialog_menu için üçüncü argüman ('$ 3')' DISK_SELECTION', sonra '$ 4'den tüm argümanlar' ARRAY'ın içeriği olacaktır. Yani, dialog_menu "Disk seçimi" "Lütfen ..." DISK_SELECTION "$ {ARRAY [@]}" '. Ayrıca, değişken isimlerinizi (örneğin, ARRAY veya başka bir küçük harfli ad yerine 'dizi) bir kongre ortamı değişkenleri ile küçültmenizi ve iç kabuk değişkenlerini tamamen büyük harfle yazmanızı öneririz. Değişken adlar büyük/küçük harfe duyarlı olduğundan, bu kural çevresel ve içsel değişkenleri yanlışlıkla geçersiz kılar. –

+0

[Argümanlar] (http://mywiki.wooledge.org/Arguments) daha fazla okumak ve öğrenmek için harika bir kaynaktır :-) –

cevap

0
#!/bin/bash 

array=(
    'sda' 
    'super cool' 
    'sdb' 
    'less cool' 
    'sdc' 
    'there is another ?' 
) 

function dialog_menu() 
{ 

    arr["$1"]="$(dialog --clear \ 
      --backtitle "$2" \ 
      --title "$3" \ 
      --menu "$4" 10 60 3 \ 
      "${!5}" --output-fd 1)" 

} 

dialog_menu disk_selection "Menu" "Menu Test" "This is a test for Menu entry" array[@] 

hüner sonra array[@]

NB normalde dizi çağrı dialog_menu fonksiyonun değişken olarak ${!5} kullanmaktı: