Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 29/07/2015, à 07:54

iMadz

Enregistrement des données tapées par l'utilisateur

Bonjour,
Je suis entrain de faire un unix script. Quand l'utilisateur l'execute, le programme lui demande s'il veut enregistrer de nouveaux membres ou bien afficher la liste des membres enregistrés. Quand l'utilisateur enregistre de nouveaux membres, leur nom est mis dans un tableau, ce qui permetterai de les afficher plus tars. Cependant, je veux bien que les données dans le tableau soient enregistrés même quand le script est fermé (ce qui n'est pas le cas bien sûr). Comme ça, la prochaine fois que l'utilisateur ouvre le script, il peut simplement afficher la liste des membres déjà enregistrés auparavant. Je pense que ce n'est pas possible, sauf si je les sauvegarde dans un fichier texte puis je les charge lors de la prochaine ouverture du script.. non? Et si c'est le cas, je ne sais pas comment le faire tongue.

Pourriez-vous m'aider concernant ce sujet? neutral

Merci d'avance! ^^ big_smile big_smile

Hors ligne

#2 Le 29/07/2015, à 08:45

credenhill

Re : Enregistrement des données tapées par l'utilisateur

hello
sauver le contenu d'un tableau dans 1 fichier, 1 entrée par ligne ou sur 1 ligne

$ printf "%s\n" ${t[@]}  > fichier
$ echo ${t[@]}  > fichier

Hors ligne

#3 Le 29/07/2015, à 08:51

iMadz

Re : Enregistrement des données tapées par l'utilisateur

credenhill a écrit :

hello
sauver le contenu d'un tableau dans 1 fichier, 1 entrée par ligne ou sur 1 ligne

$ printf "%s\n" ${t[@]}  > fichier
$ echo ${t[@]}  > fichier

et donc à chaque fois que l'utilisateur rentre un nom il sera enrefistré et dans le tableau et dans le fichier. Puis à la prochaine ouverture je dirais au script d'aller chercher les noms dans le fichier et les mettre dans le tableau?  et comment je lui dit de les chercher du fichier et les mettre dans le tableau?

et en fait, le code ne marche pas, a chaque fois que je tape un noveau nom, il remplace l'ancien!

Dernière modification par iMadz (Le 29/07/2015, à 09:07)

Hors ligne

#4 Le 29/07/2015, à 09:25

credenhill

Re : Enregistrement des données tapées par l'utilisateur

non,  le tableau n'est sauvé qu'à l'exécution de ces commandes
pour relire le tableau depuis le fichier

t=( $(<fichier) )

Hors ligne

#5 Le 29/07/2015, à 10:05

iMadz

Re : Enregistrement des données tapées par l'utilisateur

credenhill a écrit :

hello

$ printf "%s\n" ${t[@]}  > fichier

en fait, il faut remplacer le ">" par ">>" sinon a chaque fois qu'on ecrit dans le fichier, tout ce qui etait present sera ecrasé!
et la ça marche! merci beaucoup pour ton aide! big_smile

Hors ligne

#6 Le 29/07/2015, à 13:56

erresse

Re : Enregistrement des données tapées par l'utilisateur

Bonjour,
credenhill n'a pas tort... Si tu charges le tableau avec le contenu du fichier lorsque tu démarres le script, puis que tu ajoutes de nouveaux noms au tableau pendant la saisie, il faut le sauver une seule fois en quittant le script. L'ensemble des données contenues dans le tableau seront alors enregistrées dans le fichier.
Si tu fais des ajouts au fichier avec >> tu auras des données en double !


Plus de 50 ans d'informatique, ça en fait des lignes de commandes en console, mais on n'avait pas le choix...
Excellente raison pour, aujourd'hui qu'on le peut, utiliser au maximum les INTERFACES GRAPHIQUES !
Important : Une fois résolu, pensez à clore votre sujet en ajoutant [Résolu] devant le titre du 1er message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.

Hors ligne

#7 Le 30/07/2015, à 08:47

iMadz

Re : Enregistrement des données tapées par l'utilisateur

erresse a écrit :

Si tu fais des ajouts au fichier avec >> tu auras des données en double !

En fait, ca marche très bien avec moi en utilisant >> parce qu'à chaque foi que j'utilise > ça efface le contenu du text et ça ne met rien à la place!
J'ai fait un test_text.txt file pour tester. J'ai mis dedans 5 noms. Quand je fais par exemple grep -v john test_text.txt > test_text.txt, il efface le contenu du fichier et ne met plus aucun nom.
Cependant, si je fait que grep -v john test_text.txt dans mon terminal, je voie tous les noms affichés sauf john et donc ça marche bien mais que dans le terminal!

Une idée pourquoi ça efface le contenu du fichier texte?

Hors ligne

#8 Le 30/07/2015, à 09:10

credenhill

Re : Enregistrement des données tapées par l'utilisateur

> remet le fichier à 0 et ajoute les données
>> ajoute aux données existantes
c'est au choix,cf man bash

Hors ligne