Erreur d'execution

Fermé
ennouma_123 Messages postés 5 Date d'inscription mercredi 18 mars 2020 Statut Membre Dernière intervention 23 mars 2020 - Modifié le 23 mars 2020 à 18:09
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 - 23 mars 2020 à 18:05
bonjour, svp je veux savoir la commande exacte pour exécuter ce script dans le terminal
car lorsque je fais cette commande: ./projet.sh 23/03/2020 j'ai deux erreurs:
1-cannot open '+2' for reading: no such file or directory
2- erreur: usage: projet.sh jour mois annee

l'idée de script est l'affichage du jour de la semaine correspond une date donnée.
voici le script:




#!/bin/bash
# queljour.script
# recherche du jour de la semaine pour une date donnee

case $# in 
 3) ;;


*) echo "ERREUR: usage : `basename $0` jour mois annee" 1>&2; 
    exit 1;;
esac
# sauvegarde des arguments d'appel
jour=$1 ; mois=$2 ; an=$3

if ! cal $mois $an |tail +2|grep -e $jour >/dev/null
  then 
       echo "ERREUR: date incorrecte ($jour/$mois/$an)" 1>&2; 
       exit 1;
fi

# La commande cal a en sortie le format suivant :
#  ligne 1 : mois et annee 
# ligne 2 : jours (S M Tu W Th F S : Dim Lun Mar Mer Jeu Ven Sam)
# Ces 2 lignes seront elimines et le test portera sur un jour avec 2 chiffres
# sachant que le 1er est le meme jour que le 8 et le 15, le 5 que le 12 ...

# conversion de 1 et 2 en 15 et 16 et de 3,4 .. 9 en 10,11 .. 16
# pour garantir l'unicite de la recherche (sinon 6 se retouve dans 16 et 26...)

case $jour in
 0) echo "ERREUR: Date incorrecte" 1>&2; 
           exit 1;;
 1|2) let j=$jour+14;;
 3|4|5|6|7|8|9) let j=$jour+7;;


*) j=$jour;;
esac

# recuperation de la semaine concernee en eliminant les 3 premieres lignes 
# puis de la position du jour recherche

set `cal $2 $3 | tail +2 | grep "$j"`
# traduction de la position en un jour de la semaine

case $j in
 $1) JOUR=Dimanche;;
 $2) JOUR=Lundi;;
 $3) JOUR=Mardi;;
 $4) JOUR=Mercredi;;
 $5) JOUR=Jeudi;;
 $6) JOUR=Vendredi;;
 $7) JOUR=Samedi;;
esac
echo "Le $jour $mois $an est un $JOUR"

1 réponse

zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 418
23 mars 2020 à 18:05
Salut,
je veux savoir la commande exacte pour exécuter ce script dans le terminal
Enlève les slashs dans la date !
./projet.sh 23 03 2020


;-))

0