[Unix-shell bourne] recuperer un argument

Résolu/Fermé
leeloo_aya Messages postés 6 Date d'inscription lundi 7 mars 2011 Statut Membre Dernière intervention 21 mars 2011 - 7 mars 2011 à 08:39
leeloo_aya Messages postés 6 Date d'inscription lundi 7 mars 2011 Statut Membre Dernière intervention 21 mars 2011 - 7 mars 2011 à 11:51
Bonjour

Je debute en unix et je dois créer un programme en shell de bourne.
le contexte du sujet n est pas ttres compliqué : j ai un fichier de salle de tp et je dois reserver une de ces salles suivant le tp a faire

fichier salle : nomSalle;nbreOrdi;logiciel1/logiciel2/..
ex: 201;22;Eclipse
202;15;SSH/Eclipse
.. 203;14;SSH

fichier reservations : id;classe;salle;nbEleve;date;heure;typeTP
ex : 1;L3;201;14;09/08/2010;8;Java
2;M1;202;12;09/08/2010;10;Unix
...

Je bloque pour deux choses :
- j'aimerai proposé les salles disponibles suivant le type de tp que l on va faire
par exemple si c est un tp unix, la salle 202 vu qu'il y a SSH sur les postes, la salle 201 ou 202 pour Java vu qu'il y a Eclipse sur les postes
Je n'arrive pas à recuperer la salle qui a le bon logiciel qui correspond au tp

- j'aimerai recuperer l'id des reservations pour creer une nouvelle reservation
j'ai essayer avec la commande awk de recuperer le premier argument de la derniere ligne + 1 et ca marche
awk -F ";" '{ligne= $0} END {print $1+1}' reservations

mais comment mettre le resultat de la commande dans une variable?
je n arrive pas a réutiliser le resultat (3 par rapport a l exemple) de ma commande pour l'ecrire dans le fichier reservation
echo "$id;$classe;$salle;$ndEleve;$date;$heure;typeTP" >> reservations


Merci d'avance pour votre aide

A voir également:

2 réponses

Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
7 mars 2011 à 09:35
salut.
Déjà, un lien utile :
https://www.eila.univ-paris-diderot.fr/enseignement/lea/cours/informatique/linux/filters-1
où il y a plein d'outils décris qui pourront être utiles.

Ton message est un peu confus, il y a beaucoup de questions.
pour mettre un résultat de commande dans une variable, il faut encapsuler la commande, soit entre $( et ) soit entre ' (AltGr+7). Par exemple :
resu=$(ls -d f*);
quelque part, il faudrait que tu fasses un fichier de correspondance entre type ed TP et logiciel.
un lien utile, pour lire un fichier ligne par ligne :
https://forums.commentcamarche.net/forum/affich-37620017-comment-lire-un-fichier-ligne-par-ligne

Par exemple, pour ton premier tiret, si tu as mis le type de TP dans la variable "TP" :
if [ TP == "Unix"]
then cut -d ";" -f 3 salle | grep SSH -n |cut -f 1 -d ":"
fi

te sortira une liste des numéros de ligne de salle qui contiennent SSH. Ensuite, tu peux faire ton traitement à partir de ça.
1
leeloo_aya Messages postés 6 Date d'inscription lundi 7 mars 2011 Statut Membre Dernière intervention 21 mars 2011
Modifié par leeloo_aya le 7/03/2011 à 12:02
Merci

j'ai reussi à mettre mon id dans la variable et pouvoir comme ca enregistrer une nouvelle reservation en ecrivant dans le fichier le bon id

et j arrive aussi a recuperer les salles dans lesquels on peut faire un tp
je vais essayer d ajouter une meilleure presentation des resultats (ecrire la ligne en texte pour la rendre plus comprehensible)

merci beaucoup en tout cas :) ca me simplifie beaucoup de choses de pouvoir mettre le resultat des commandes dans une variable
0