Partage
  • Partager sur Facebook
  • Partager sur Twitter

[whiptail] Récupérer une variable d' un pipe

whiptail

17 octobre 2021 à 10:44:44

Bonjour,

je n'arrive pas à récupérer la variable nommé langage d'une fenêtre whiptail à une autre , auriez vous une idée ?

il dois y avoir une histoire de local global, enfin je pense, voici mon code

#!/bin/bash

# on recherche la langue installé                                        : locale-gen
# on récupère la deuxième ligne                                          : sed -n 2p
# on supprime les espaces en début de ligne et récupère le 3eme argument : cut -d ' ' -f 3
# on supprime les . en fin de fichier                                    : sed 's/[.]*$//'

{
	for ((i=0; i<=100; i+=10))
	do
		sleep 0.1
		echo $i	
		if [[ $i == 50 ]]; then 
			langage=`locale-gen | sed -n 2p | cut -d ' ' -f 3 | sed 's/[.]*$//'`			
		fi	
	done
		
} | whiptail --gauge "Recherche du langage système en cours ..." 6 60 0


if (whiptail --title "Heure GMT" \
			 --backtitle "Paramétrage du Raspberry pi" \
			 --yesno "Le langage actuel est :\n\n ${langage} \n\n Voulez vous le passer en FR ?" \
			 --yes-button "oui" \
			 --no-button "non" \
			 --separate-output 12 60) \
then
	sed -i "s/^# *\(fr_FR.UTF-8\)/\1/" /etc/locale.gen
	sed -i "s/en_GB.UTF-8 UTF-8/# en_GB.UTF-8 UTF-8/g" /etc/locale.gen
	whiptail --title "Heure GMT" --backtitle "Paramétrage du Raspberry pi" --msgbox "Changement de langage effectué !!!" 12 60
else
	whiptail --title "Heure GMT" --backtitle "Paramétrage du Raspberry pi" --msgbox "Changement de langage annulée !!!" 12 60
fi

J'ai trouvé finalement, après 2 heures de recherche et d'essais, voici le code :

#!/bin/bash

# on recherche la langue installé                                        : locale-gen
# on récupère la deuxième ligne                                          : sed -n 2p
# on supprime les espaces en début de ligne et récupère le 3eme argument : cut -d ' ' -f 3
# on supprime les . en fin de fichier                                    : sed 's/[.]*$//'

for ((i=0; i<=100; i+=10))
do
	sleep 0.1
	echo $i	
	if [[ $i == 50 ]]; then 
		langage=`locale-gen | sed -n 2p | cut -d ' ' -f 3 | sed 's/[.]*$//'`			
	fi	
done > >(whiptail --gauge "Recherche du langage système en cours ...." 12 50 0) 
		
if (whiptail --title "Heure GMT" \
			 --backtitle "Paramétrage du Raspberry pi" \
			 --yesno "Le langage actuel est :\n\n ${langage[@]} \n\n Voulez vous le passer en FR ?" \
			 --yes-button "oui" \
			 --no-button "non" \
			 --separate-output 12 60) \
then
	sed -i "s/^# *\(fr_FR.UTF-8\)/\1/" /etc/locale.gen
	sed -i "s/en_GB.UTF-8 UTF-8/# en_GB.UTF-8 UTF-8/g" /etc/locale.gen
	whiptail --title "Heure GMT" --backtitle "Paramétrage du Raspberry pi" --msgbox "Changement de langage effectué !!!" 12 60
else
	whiptail --title "Heure GMT" --backtitle "Paramétrage du Raspberry pi" --msgbox "Changement de langage annulée !!!" 12 60
fi


-
Edité par Manubiglia 20 octobre 2021 à 17:10:38

  • Partager sur Facebook
  • Partager sur Twitter
17 octobre 2021 à 20:37:55

Bonjour,

Mauvais titre

Le titre est un élément important qui ne doit pas être négligé. N'oubliez pas cette règle simple : le titre idéal résume la question que vous allez poser en une petite phrase. Il doit permettre aux visiteurs de se repérer facilement dans le forum visité et d'identifier le sujet à sa seule lecture.

Vous pouvez utiliser divers préfixes comme [Erreur], [MySQL], [Compatibilité], etc... Aussi, pensez à consulter les règles propres à chaque forum (visibles dans les topics épinglés en haut des sections).

De plus, choisir un bon titre permet de rendre plus faciles les recherches des autres membres.

Les titres de type "besoin d'aide" ou "problème" ne sont pas tolérés.

Pour modifier votre titre, éditez le premier message de votre sujet.

(titre originel : Besoin d'aide pb de variable sript shell)

Liens conseillés

  • Partager sur Facebook
  • Partager sur Twitter