2016-04-07 3 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]}" 

ここで問題になるのは、dialog --menuを使って配列を読み込むことです。しかし何らかの理由で私はそれを動作させる方法を見つけることができません。bashのダイアログ関数のパラメータとしての配列

EDIT 1:

Iはarray=('sda' 'super cool' 'sdb' 'less cool')に配列を変更しようとした機能外側置換"${array[@]}"と連動。しかし、それが機能すると、それはもはや機能しません。

+0

を確保するために、コードを少し修正しました3番目の引数( '$ 3')を' dialog_menu'に 'DISK_SELECTION'とすると、' $ 4'のすべての引数は 'ARRAY'の内容になります。だから、 'dialog_menu"ディスク選択 "" ... "DISK_SELECTION" $ {ARRAY [@]} "'。規約の環境変数や内部シェル変数が完全に大文字になっているように、変数名( 'ARRAY'の代わりに' array'やその他の小文字の名前)を小文字にすることをお勧めします。変数名では大文字と小文字が区別されるため、環境や内部変数を誤って上書きすることは避けてください。 –

+0

[議論](http://mywiki.wooledge.org/Arguments)は、さらに読むことができます:-) –

答えて

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[@] 

トリックはarray[@]

NBと、通常の配列を呼び出した後、dialog_menu関数の変数として${!5}を使用していた:私はあなたが作ることをお勧めより良い読書

関連する問題