logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 01-06-2018 18:41:07

Yvano
Membre
Inscription : 01-06-2018

Debian erreur

Bonjour j'ai un souci avec mon script debian. Savez-vous m'aider svp ?


#!/bin/bash
#si le fichier.txt n'existe pas --> erreur
if ! [ -f fichier.txt ]
then
echo "fichier.txt absent";
exit 1;
fi
# si y a option après la commande
if ! [ -z $1 ]then
while getopts adgn:r: option
do
case $option in
a)
entreValide=false
#temps que l'entré n'est pas valide, on recommence l'ajout
while [ !$entreValide ]
do
read -p "NOM Prénom: " nom prenom
read -p "Votre groupe: " groupe
if [ $groupe = 'A' ] || [ $groupe = 'B' ] || [ $groupe = 'C' ]
then
read -p "N°étudiant :" numEtu
ladate=$(date +"%Y-%m-%d")
echo "\n$prenom $nom$numEtu 2ème$groupe \nInscrit le
$ladate"

#demande à l'utilisateur si les infos sont OK (yes or no)
read -p "Ces informations sont-elles correctes [oui/non]?" yn
case $yn in
#réponse commencant par y ou o = validé
[OoYy]* ) entreValide=true; break;;
* ) entreValide=false;;
esac
else
echo "Mauvaise entrée pour le groupe"
fi
done
echo "Ajout validé"
echo "$nom;$prenom;$groupe;$numEtu;$ladate" >> fichier.txt
exit 0;;
r)
# si nom existe dans la recherche
recherche=$(awk -F ';' '$2 == "'$OPTARG'" {$1=$1;print $0}' fichier.txt) #$2 =
2ème colonne
# {$1=$1;print $0} --> supprime le séparateur lors de l'affichage pour des raisons
obscures
if [ ${#recherche} -gt 1 ] #si la variable recherche contient qqchose
then
echo $recherche
else
echo "Prénom non trouvé dans le fichier."
fi
exit 0;;
g)
sort -t ';' -k 3 fichier.txt;; # tri selon 3ème colonne (classe) et affiched)
sort -t ';' -k 1 -o triNom.txt fichier.txt # tri selon 1ère colonne (nom) -> fichier
awk -F ';' '{$NF=""; print $0}' triNom.txt #affichage sans la dernière colonne (NF)
exit 0;;
n)
sort -t ';' -k 5 -o triDate.txt fichier.txt # tri selon 5ème colonne (date) -> fichier
awk -F ';' '$4 > '$OPTARG' {$1=$1;print $0}' triDate.txt # affichage uniquement si
OPTARG > colonne n3
exit 0;;
*) echo "Option Inconnue"
exit 1;;
esac
done
#pas d'options : Manuel
else
echo "\n\t\Elliot RASCH ©t\tscriptExam.sh manuel :\n
-a : ajoute un étudiant
-d : affiche la liste triée par nom sans la date
-g : affiche la listre triée par groupe
-n <N°Etu> : affiche la liste triée dont le n° est > à la valeur entrée. Trié par date.
-r <prénom>: recherche par prénom"
:;
fi
exit 0;



Edit à toto : Mis le script en utilisant le BBcode du forum : Autre code afin que ce soit plus lisible par tous.
Tu peux éditer ce post par Modifier en bas à droite afin de lire l'écriture style BBcode (automatique par le bouton Autre code).

Hors ligne

#2 01-06-2018 19:20:45

kawer
Membre
Lieu : Earth
Distrib. : Debian Stable
Noyau : Current
(G)UI : Xfce
Inscription : 08-10-2013

Re : Debian erreur

Bonjour, tu a les balises code pour mettre ton code lorsque tu écrit un message, et ici c'est la section présentation, pour ta demande d'aide ouvre un poste dans la section script et automatisation des tâches. Tu peu modifier ton message pour te présenter si tu le désire en cliquant en bas a droite de ton message sur le bouton adéquate.

Dernière modification par kawer (01-06-2018 19:21:41)


Songez à ce que vous avez été, à ce que vous êtes, et à ce que vous serez un jour, et vous deviendrez humbles. Saint Vincent de Paul
La maladie la plus constante et la plus mortelle, mais aussi la plus méconnue de toute société, est l’indifférence. Abbé Pierre
Carpe diem, quam minimum credula postero. Horace

Hors ligne

#3 15-06-2018 03:29:05

smolski
quasi...modo
Lieu : AIN
Distrib. : backports (buster) 10
Noyau : Linux 4.19.0-8-amd64
(G)UI : gnome
Inscription : 21-10-2008

Re : Debian erreur

Salut Yvano et bienvenue sur df !

La discussion ouverte étant un problème de script et non une présentation a été déplacée dans la section idoïne.
Merci de te présenter Une nouvelle fois dans la section présentation afin que nous puissions mieux te répondre.

Amitié, Joel smile

saque eud dun (patois chtimi : fonce dedans)

Hors ligne

#4 15-06-2018 08:05:00

bendia
Chadministrateur
Distrib. : openSUSE Tumbleweed, Buster
Noyau : Linux 5.9.1-2-default + Linux 4.19.0-12-amd64
(G)UI : Gnome + Console et un peu Fluxbox
Inscription : 20-03-2012
Site Web

Re : Debian erreur

Bonjour et bienvenue smile

Yvano a écrit :

Savez-vous m'aider svp ?

En l'état, non, d'une part parce que tu ne nous as pas expliqué ce que ton script était supposé faire, et d'autre part, parce-que tu ne nous as pas dit non plus ce qu'il se passe lorsque tu l’exécutes (es-ce une erreur, et alors laquelle, est-ce une sortie sans erreur, mais qui n'est pas celle attendue ? )

Un petit tuto pour que tu nous aides à t'aider wink Voir le tuto : Manuel du chocolat DF : « Ça marche pas ! »


Ben
___________________
La seule question bête, c'est celle qu'on ne pose pas.

Hors ligne

#5 15-06-2018 14:51:15

captnfab
Admin-Girafe
Lieu : /dev/random
Distrib. : Debian
Noyau : Dur
(G)UI : gui gui, je zuis un doiseau
Inscription : 07-07-2008
Site Web

Re : Debian erreur

Ceci ne devrait pas marcher : « [ -z $1 ] » parce que s'il n'y a pas de premier argument, bash vera « [ -z [ » et il dira qu'il manque un argument.
Pour corriger ça : « [ -z "$1" ] ». Alors, bash verra « [ -z "" ] » qui s'évaluera en vrai.


« [ !$entreValide ] » Ne va pas s'évaluer comme tu veux : tu ne peux pas utiliser les booléens comme ça en bash. À la limite, tu peux utiliser : « ! [ "$entreValide"="true" ] ». Tu remarques alors que "true" est une chaîne de caractère et non-pas un booléen.

captnfab,
Association Debian-Facile, bépo.
TheDoctor: Your wish is my command… But be careful what you wish for.

Hors ligne

Pied de page des forums