[DIALOG] Array qui ne fonctionnent pas dans une fonction [RÉSOLU]

Applications, problèmes de configuration réseau
aminnairi
archer de cavalerie
Messages : 187
Inscription : lun. 10 août 2015, 13:50
Localisation : France

[DIALOG] Array qui ne fonctionnent pas dans une fonction [RÉSOLU]

Message par aminnairi »

Bonjour à tous,

J'ai un petit souci au niveau d'une partie de mon code qui est le suivant :

Code : Tout sélectionner

#!/bin/bash

array=('sda' 'super cool' 'sdb' 'less cool')

dialog --clear \
--backtitle "Menu" \
--title "Menu Test" \
--menu "This is a test for Menu entry" 10 60 3 \
"${array[@]}"

function dialog_menu()
{

	dialog --clear \
	--backtitle "$1" \
	--title "$2" \
	--menu "$3" 10 60 3 \
	"$4[@]"	

}

dialog_menu "Menu" "Menu Test" "This is a test for Menu entry" "${array[@]}"
La première partie du code marche sans aucun problèmes. La deuxième partie non. Pourtant, j'ai essayé de reproduire le même effet dans la fonction mais je n'y arrive pas. Quelqu'un d'expérimenté aurait une idée ?

Le but final étant de créer une fonction modulable pour l'instruction menu du paquet Dialog.

Merci par avance pour votre aide !
Dernière modification par aminnairi le ven. 08 avr. 2016, 12:16, modifié 1 fois.
Arch Linux x86_64 UEFI
7,3 Gio RAM
Intel® Core™ i5-4200U CPU @ 1.60GHz × 4
Intel® Haswell Mobile + NVIDIA GeForce 840M 2 Gio vRAM
KDE Plasma + SDDM
aminnairi
archer de cavalerie
Messages : 187
Inscription : lun. 10 août 2015, 13:50
Localisation : France

Re: [DIALOG] Array qui ne fonctionnent pas dans une fonction

Message par aminnairi »

Trouvé par tatonnement...

Il fallait remplacer la 4ème argument par

Code : Tout sélectionner

${!4}
Et le 4ème argument dans l'appel de la fonction par

Code : Tout sélectionner

array[@]
Je pense que cela fait référence à des notions de pointeurs (que je maîtrise très mal encore en C alors en bash...).
Arch Linux x86_64 UEFI
7,3 Gio RAM
Intel® Core™ i5-4200U CPU @ 1.60GHz × 4
Intel® Haswell Mobile + NVIDIA GeForce 840M 2 Gio vRAM
KDE Plasma + SDDM
Moviuro
Elfe
Messages : 765
Inscription : dim. 17 juin 2012, 22:49

Re: [DIALOG] Array qui ne fonctionnent pas dans une fonction [RÉSOLU]

Message par Moviuro »

tu peux déclarer ton array comme global :

Code : Tout sélectionner

declare -g mon_array
psycho : Latitude E6430 ; BTRFS over LUKS, UEFI & secureboot
schizo : Acer 8942G ; KDE 4, BTRFS over LUKS ; W7 (prend la poussière)
toxo : i5-6600K, bspwm, VM W10 en PCI-passthrough
deadman : Lenovo Thinkcenter, OpenBSD 6.0-stable
popho.be : Kimsufi KS-3, FreeBSD 11.0
Loi de Murphy : Le jour où tu as besoin d'une backup, tu te dis que tu aurais dû en mettre en place
Venez sur IRC en plus du forum !
Répondre