Page 1 sur 1

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

Publié : ven. 08 avr. 2016, 12:01
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 !

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

Publié : ven. 08 avr. 2016, 12:15
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...).

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

Publié : ven. 08 avr. 2016, 14:26
par Moviuro
tu peux déclarer ton array comme global :

Code : Tout sélectionner

declare -g mon_array