CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

recuperer la valeur dune variable

Sangoku
Sangoku
Niveau 10
06 octobre 2010 à 09:03:35

( desoler j'utilise un qwerty pas encore habituer :/ )

bonjour , je voudrais savoir quel fonction utiliser pour recuperer la valeur dune valeur dans un systeme unix

j'ai un federa et je me connecte a un shh pour faire quelques truc dessus voila au juste ce que je voudrais savoir si possible :

je dois ecrire dans un fichier :

une ligne de commande qui determine et affiche la liste des groupes dans lesquels est membre le login specifie dans la variable MY_USER, separes par des virgules (SANS ESPACE).
* Exemple :
avec MY_USER=astek le resultat est "prof" (sans les guillemets)
avec MY_USER=root le resultat est "root,bin,daemon,sys,adm,disk,wheel" (sans les guillemets)

donc la ce je crais la varible avec :
setenv MY_USER
maintenant je sais pas si la varible doit recuperer la valeur contenu dans MY_USER ( si oui comment ) ou si on doit donner a MY_USER comme valeur la variable $user ou pas ?

jai pas trop compris ce que je devais faire en faite , jai chercher sur google en vain comment recuperer la valeur dune variable mais je trouve pas :-(

ce que je pensais faire cest : creer la variable MY_USER avec comme valeur MY_USER exemple
si je tappe MY_USER = root m il recuperer le root et donc quand j'utilise $MY_USER ca va m'afficher root si oui comment faire ?
a partir de la j'aurais plus cas faire un fichier avec comme commande :
groups $My_USER
et donc quand je tappe ( prenons comme nom de fichier groupe )
./groupe MY_USER=root
ca me met le groupe de root c'est a dire root,adm ect ...

je sais pas si je me suis trop fais comprendre ?

please jai vraiment besoin d'aide , stp si tes la chris help me :-(

chris_27
chris_27
Niveau 10
06 octobre 2010 à 10:26:22

« setenv MY_USER » :d) mais tu codes en/avec quoi ? :doute:
Elle m'a l'air surréaliste ta formation. Enfin bref… :(

Je n'ai pas bien compris ton problème. Ton fichier groupe c'est un script shell ou un programme C compilé ? Quant à ta variable : tu tiens vraiment à ce que ce soit une variable d'environnement ou tu veux juste que ce soit un argument donné à groupe ?

Deux exemples pour t'éclairer :

chris@melange:~% cat test.sh

  1. !/bin/sh

echo $TOTO
chris@melange:~% TOTO=bonjour ./test.sh
bonjour
chris@melange:~%

chris@melange:~% cat test2.sh

  1. !/bin/sh

echo $1 $2 $3
chris@melange:~% ./test2.sh bonjour
bonjour
chris@melange:~% ./test2.sh bonjour tout le monde
bonjour tout le
chris@melange:~%

Dans le premier cas, on utilise une variable d'environnement TOTO, alors que dans le deuxième on utilise le mécanisme classique de passages d'arguments.

Sangoku
Sangoku
Niveau 10
06 octobre 2010 à 10:44:52

c'est un script shell

voila les fonctions qu'on utilise :
http://www.linux-france.org/article/man-fr/man1/Index-1.html

on voit que le setenv crait une varible

je dois creer un fichier qui contient une fonction qui permet d'obtenir le groupe d'une personne.
pour ca il y a la fonction groups , sauf que maintenant le nom de l'utilisateur doit etre contenue dans la variable $MY_USER

par exemple dans le cas ou je met pour MY_USER mon propre login ca devrait mafficher
MY_USER najim-_m

le resultat devrait donner : epitech_2015

qui est le nom de mon groupe
donc voila a peut pres

si le nom du fichier cest : groupe
et que je l'excecute ./groupe MY_USER=root

ca va m'afficher : root,ect...

Sankukai
Sankukai
Niveau 10
06 octobre 2010 à 10:48:34

« setenv MY_USER » :d) mais tu codes en/avec quoi ?

Du bon vieux (t)csh je dirais.
Mais j'avoue que du csh et des acl sur de l'openafs, c'est pas commun…

Sangoku
Sangoku
Niveau 10
06 octobre 2010 à 10:50:35

sur un terminale xterm sous fedora

Sangoku
Sangoku
Niveau 10
06 octobre 2010 à 10:53:14

voici lexercice :

Exo 01: aff_groups.sh

Ecrire une ligne de commande qui determine et affiche la liste des groupes dans lesquels est membre le login specifie dans la variable MY_USER, separes par des virgules (SANS ESPACE).
Indice : man groups
Exemple :
avec MY_USER=astek le resultat est "prof" (sans les guillemets)
avec MY_USER=root le resultat est "root,bin,daemon,sys,adm,disk,wheel" (sans les guillemets)

voila et le probleme cest que cest l'exercice 1 et des que le robot qui corrige rencontre une erreur il sarrete et donne une note donc la au mieu j'aurais un 1

hors de l'exercice 02 jusqu'au 8 je les ai traiter et je suis sur de les avoir reussis , mais j'ai des doutes sur celui la ' hors si celui la nest pas bon il nira pas voir le reste :/

chris_27
chris_27
Niveau 10
06 octobre 2010 à 10:53:45

Le setenv il ne te sert absolument à rien à mon humble avis. Pire, tous les shells n'acceptent pas cette syntaxe. En l'occurence:

chris@melange:~% setenv TOTO
zsh: command not found: setenv
chris@melange:~%

« je dois creer un fichier qui contient une fonction qui permet d'obtenir le groupe d'une personne.
pour ca il y a la fonction groups » :d) ok.

« et que je l'execute ./groupe MY_USER=root » :d) c'est là que je ne suis pas d'accord.
Regarde mes deux exemples précédents qui eux marchent (et surtout l'emplacement de l'affectation dans le 1er exemple).
Et enlève les setenv s'il y en a.

Sankukai
Sankukai
Niveau 10
06 octobre 2010 à 10:55:40

Un robot qui corrige les exercices et s'arrête dès qu'une erreur est rencontrée, c'est super pédagogique… o_O
Là c'est plus que surréaliste…

chris_27
chris_27
Niveau 10
06 octobre 2010 à 10:58:57

Solution:

$ groups $MY_USER | cut -d ':' -f 2 | sed 's|^ ||' | tr ' ' ','

PS: on demande une ligne de commande, je ne me fatigue pas d'avantage. :-)

Sankukai
Sankukai
Niveau 10
06 octobre 2010 à 11:00:28

Chris_27> Le problème est que s'il est coincé avec du csh, il faudra bien qu'il utilise setenv vu que dans ce cadre CLEF=VALEUR n'est pas reconnu.
xxx:/home/moi $ csh
[moi@xxx ~]$ TOTO=bonjour
TOTO=bonjour: Commande introuvable.
[moi@xxx ~]$

chris_27
chris_27
Niveau 10
06 octobre 2010 à 11:01:00

Allez, quitte à abuser de sed :

$ groups $MY_USER | cut -d ':' -f 2 | sed 's|^ ||;s| |,|g'

(et ça va encore être tout tassé :malade: )

Sangoku
Sangoku
Niveau 10
06 octobre 2010 à 11:03:07

chris >> justement sur mon shell c'est setenv qui marche et pas par exemple export :p

dans l'exemple que tu m'as mis , ca bloque la premiere ligne : ~% cat test.sh

  1. !/bin/sh avec comme erreur : Event not found.

sankukai >> oui c'est bizarre comme systeme mais bon et on nous file des exos (10) et on cherche les resultats nous meme alors quil y a 2 jours on avait aucune notion de cela. 30 minutes de cours et 12h de rame sur les exo

et oui on vient 7/7 pendant 3 semaines de 9h a 23h42 minumum chaque jour

bon aujourd'hui on vient de commencer le c/c le cours fais 15 minutes et voila qu'on doit se tapper plein dexo alors qu'on a jamais fais de c de notre vie ...

enfin voila , pour le moment cest les exos d'hier que je termine car ce soir a 23h42 le rebot passera pour les corriger.

chris_27
chris_27
Niveau 10
06 octobre 2010 à 11:03:22

Sankukai: csh ça n'existe pas sous linux (même chez debian ils ont abandonné ça il y a des lustres). :-)

Je veux bien être gentil, mais pas faire le zouave pour le plaisir d'autrui. :oui:

chris_27
chris_27
Niveau 10
06 octobre 2010 à 11:06:27

Sangoku: le cat n'est là que pour te montrer le contenu de mon fichier test.sh hein. :-)))

« 30 minutes de cours et 12h de rame sur les exo » :d) là je te plains. En plus, ça ne sera jamais utile dans la vraie ça (= faire du csh) … :malade:

Je te conseille d'essayer tes lignes de commande dans bash (si possible, maintenant je redoute le pire… :peur: ). C'est beaucoup plus souple d'utilisation, et surtout énormément plus standard au moins chez linux.

Sangoku
Sangoku
Niveau 10
06 octobre 2010 à 11:11:22

ah voila ca marche cette commande que tu m'as mis :

$ groups $MY_USER | cut -d ':' -f 2 | sed 's|^ ||;s| |,|g'

ca m'affiche bien les groupes de ce qui est mis a la place de MY_USER , si je met par exemple root jobtiens :
root,bin,daemon,sys,ect...

c'est ce qui est demander dans l'exercice mais

maintenant tu pourrais me dire stp en creant la valeur MY_USER quel valeur lui mettre ?

je pensais a faire
setenv MY_USER $USER

quand le bot va corriger je suppose quil va tester en mettant plusieus valeur a MY_USER et donc il faut que ma puisse recuperer ce quil va indique :/

chris_27
chris_27
Niveau 10
06 octobre 2010 à 11:14:55

Non, je ne peux pas. Csh pour moi ça n'existe pas, et donc je ne sais pas m'en servir.
Par contre, je te conseille de tester avec bash (il suffit de lancer la commande "bash" a priori) qui lui correspondera à ce que je t'ai montré ci-dessus.

Dans tous les cas, tu n'as pas à te soucier de comment le bot va donner une valeur à MY_USER. Tout ce qui t'importe, c'est que cette variable aura une valeur que tu peux obtenir via $MY_USER. Et donc, tu peux très bien lancer bash puis faire :
$ My_USER=toto ./groupes
pour tester.

chris_27
chris_27
Niveau 10
06 octobre 2010 à 11:16:26

D'ailleurs, quitte à abuser de sed :

$ groups $MY_USER | sed 's|^.*: ||;s| |,|g'

:o))

Sangoku
Sangoku
Niveau 10
06 octobre 2010 à 11:20:45

je test et je repond si sa marche :merci:

Sangoku
Sangoku
Niveau 10
06 octobre 2010 à 11:29:51

jai mis la commande dans le fichier aff_groups.sh
et lorsque je le lance ( ./aff_groups.sh )
sa m'affiche mon groupe a moi :p

maintenant si je lance la commande que tu m'as mis plus haut pour tester ( cat My_USER=root ./groupes )

ca me met comme erreur :
cat: =root: no such file or directory

la je comprend que le fichier root nest pas fournis hors je pensais que cette commande allais juste changer la valeur de la variable MY_USER

donc enfaite la je suis sur a 70% que cest bon mais jai toujours un doute car j'ai pas pu verifier avec un autre membre directement en excutant le fichier.

Sangoku
Sangoku
Niveau 10
06 octobre 2010 à 11:38:54

sinon une autre petite question qui na pas de rapport avec le sujet si je peux :rouge:

tu as des notions en c ?

je dois afficher l'alaphabet en minuscule sur une seule ligne avec la fonction : int my_aff_alpha();
je ne dois pas utiliser main.c ni my_putchar.c
au moment de la compilation le bot les ajouteras lui meme.

enfin voila je sais que ca fait trop mais vous pouviez me depanner :p

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment