IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Faire un script menu en ksh


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    operateur
    Inscrit en
    Octobre 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : operateur

    Informations forums :
    Inscription : Octobre 2014
    Messages : 10
    Par défaut Faire un script menu en ksh
    Bonjour

    Je débute en programmation shell et j'aimerais faire un menu me permettant d'automatiser certaines tâches.
    Je souhaiterais rechercher si un répertoire est créé à la date jour J dans un chemin pour ensuite lui assigner une commande .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    case "$reponse" in
          1) echo "Renseignez la date du jour YYYYMMDD"
    	     # Vérifiez si le dossier existe "work_date" dans le repertoire /opt/a2001/common/data/databank/
    		 read $date
    		  if  [ -d work_$date ] echo "Le fichier existe."
     
                                 then
    		 [ -d work_$date ] || echo "Le fichier n'existe pas "
     
                                 fi
                            do
                         #Appliquer la commande grep  a ce repertoire opt/a2001/common/data/databank/work_date/results/bank_5411_1$ en remplacant YYY-MM- par l'année et le mois des données traitées par la banque de données (en général c'est le mois -1)      
                         #grep YYYY-MM- 5411_1_01.DB_DS_CRLF | awk '{print $1}' | grep -v 00001 | grep -v 00003 | sort | uniq
    Est ce que quelqu'un pourrait m'aider, je sais pas du tout comment vérifier si une directorie est crée (exemple : work_20141101) ,en tapant la date du jour, encore moins appliquer une commande après avoir reçu le résultat
    Malgré les cours sur internet je n'y arrive pas.

    Merci d'avance

  2. #2
    Expert confirmé Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Par défaut
    déjà tu as compris l'essentiel manifestement.

    en utilisant un case ..... 1) ..... ;;

    pour ton grep : suffira à la limite un -il en option selon ce que tu veux récuperer.

    ta seconde valeur date -1 moi (avec la precaussion du janvier qui passe a descembre et donc à l'année -1) c'est à toi de la calculer...
    dans ton script sinon celui ci ne sera pas portable à d'autres machines à l'avenir
    l'idée est donc de découper avec cut ta date dans la première variable de faire moi=moi-1 et surtout si moi=zero alors moi=12 et année=année-1
    tu réassemble le tout donc YYYY-MM si j'ai bien vu...dans ta $vardatemoins1mois

    et tu peux alors passer à la commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /opt/a2001/common/data/databank/work_date/results/bank_5411_1$vardatemoins1mois

  3. #3
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 837
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 837
    Billets dans le blog
    1
    Par défaut
    Bonjour

    Je crois que le select existe en ksh...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  4. #4
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 102
    Par défaut
    Citation Envoyé par zdral Voir le message
    Bonjour

    Je débute en programmation shell et j'aimerais faire un menu me permettant d'automatiser certaines tâches.
    Je confirme: voir l'instruction "select".

    Sinon:

    Je souhaiterais rechercher si un répertoire est créé à la date jour J dans un chemin pour ensuite lui assigner une commande .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    case "$reponse" in
        1) echo "Renseignez la date du jour YYYYMMDD"
           # Vérifier si le dossier existe "work_date" dans le repertoire /opt/a2001/common/data/databank/
           read $date
           if  test -d work_$date
           then
               echo "Le dir 'work_$date' existe."
               #Appliquer la commande grep  a ce repertoire opt/a2001/common/data/databank/work_date/results/bank_5411_1$ en remplacant YYY-MM- par l'année et le mois des données traitées par la banque de données (en général c'est le mois -1)
               #grep YYYY-MM- 5411_1_01.DB_DS_CRLF | awk '{print $1}' | grep -v 00001 | grep -v 00003 | sort | uniq
           else
               echo "Le dir 'work_$date' n'existe pas "
           fi
           ;;
    esac

  5. #5
    Membre du Club
    Homme Profil pro
    operateur
    Inscrit en
    Octobre 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : operateur

    Informations forums :
    Inscription : Octobre 2014
    Messages : 10
    Par défaut
    Bonjour a tous,

    Merci pour vos réponse , mais je n'arrive toujours pas a faire fonctionner ce script .
    Malgrés le code de jack-ft j'ai comme résultat " Le dir 'work_' n'existe pas alors je sais pas si le test du directory ce fait bien..
    Et je ne sais pas comment me servir de la commande select non plus ..

    En ce qui concerne grep $var fichier : ou puis je mettre dans ce code??

    J'ai aussi penser a mettre un find pour trouver le directory crée :
    comme ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    1) echo "Rensegnez la date du jour YYYY,MM et DD"
     
    			 #Verifiez si le dossier "work_datejourJ" existe dans le repertoire /opt/a2001/common/data/databank/
     
    			 read $date
                 if find /opt/a2001/common/data/databank -name "work_YYYYMMDD" -type d -print
    			 then
    			     echo "Le dir 'work_$date' existe."
     
                 if [ -f work_20141001 ]
                    then echo "le fichier existe"
                 else
    			     echo "Le dir 'work_$date' n'existe pas "
                 fi
    Est ce que ça peut marcher ??

    Je vais me documenter un peu plus et essayer de passer plus de temps sur le sujet mais j'ai tendance a baisser les bars ..
    Merci a vous

  6. #6
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 102
    Par défaut
    Citation Envoyé par zdral Voir le message
    Malgrés le code de jack-ft j'ai comme résultat " Le dir 'work_' n'existe pas alors je sais pas si le test du directory ce fait bien..
    Pour tester l'existence du répertoire "work_$date" dans le répertoire courant, il suffit de faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
           if  test -d work_$date
           then
               echo "Le dir 'work_$date' existe."
               #Appliquer la commande grep  a ce repertoire opt/a2001/common/data/databank/work_date/results/bank_5411_1$ en remplacant YYY-MM- par l'année et le mois des données traitées par la banque de données (en général c'est le mois -1)
               #grep YYYY-MM- 5411_1_01.DB_DS_CRLF | awk '{print $1}' | grep -v 00001 | grep -v 00003 | sort | uniq
           else
               echo "Le dir 'work_$date' n'existe pas "
           fi
    mais, pour tester l'existence du répertoire "work_$date" dans le répertoire "/opt/a2001/common/data/databank/", il suffit de tester l'existence du répertoire "/opt/a2001/common/data/databank/work_$date" dans l'absolu (c'est la base de la base du système de répertoires d'unix!)

    Cela devrait te débloquer (à partir de ma proposition).

    En ce qui concerne le "grep", l'endroit où le mettre est dans la clause "then" du "if" qui teste l'existence du répertoire, c'est-à-dire à l'endroit où je l'ai mis dans ma proposition (en décommentant le code et ajustant le nom du fichier).

  7. #7
    Membre du Club
    Homme Profil pro
    operateur
    Inscrit en
    Octobre 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : operateur

    Informations forums :
    Inscription : Octobre 2014
    Messages : 10
    Par défaut
    J'ai tester :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    while :
    do
     
       echo "- 1 - traiter le bon 5411 "
       echo "- 2 - Restauration "
       echo "- 3 - Fin"
     
       read reponse?"Votre choix: "
     
       case "$reponse" in
          1) echo "Rensegnez la date du jour YYYY,MM et DD"
                 #Verifiez si le dossier  existe "work_datejourJ" existe dans le repertoire /opt/a2001/common/data/databank
     
                 read $date
                 if [ -d /opt/a2001/common/data/databank/work_$date ]                                                                                                                                             
                 then
                    echo "Le dir 'work_$date' existe "
     
                 else
                    echo "Le dir 'work_$date' n'existe pas"
     
                 fi
     
                 ;;
          2) echo " Vous avez choisi la restauration"
                 # lancement de la restauration
                 read x
                 ;;
          3) echo "Fin du traitement"
                 echo "A bientot ..."
                 exit 0
                 ;;
              *) echo "saisie incorrecte"
                 read x
                 ;;
        esac
     
    done
    ça ne marche tjr pas ça me répond que le fichier n'existe pas peut importe ce que je rentre comme date et même si le folder existe ..

  8. #8
    Membre du Club
    Homme Profil pro
    operateur
    Inscrit en
    Octobre 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : operateur

    Informations forums :
    Inscription : Octobre 2014
    Messages : 10
    Par défaut
    Citation Envoyé par zdral Voir le message
    J'ai tester :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    while :
    do
     
       echo "- 1 - traiter le bon 5411 "
       echo "- 2 - Restauration "
       echo "- 3 - Fin"
     
       read reponse?"Votre choix: "
     
       case "$reponse" in
          1) echo "Rensegnez la date du jour YYYY,MM et DD"
                 #Verifiez si le dossier  existe "work_datejourJ" existe dans le repertoire /opt/a2001/common/data/databank
     
                 read $date
                 if [ -d /opt/a2001/common/data/databank/work_$date ]                                                                                                                                             
                 then
                    echo "Le dir 'work_$date' existe "
     
                 else
                    echo "Le dir 'work_$date' n'existe pas"
     
                 fi
     
                 ;;
          2) echo " Vous avez choisi la restauration"
                 # lancement de la restauration
                 read x
                 ;;
          3) echo "Fin du traitement"
                 echo "A bientot ..."
                 exit 0
                 ;;
              *) echo "saisie incorrecte"
                 read x
                 ;;
        esac
     
    done
    ça ne marche tjr pas ça me répond que le fichier n'existe pas peut importe ce que je rentre comme date et même si le folder existe ..
    LOL je suis vraiment nul ! ça ne fonctionner pas car j'avais mis "$date " j'ai enlever le $ et c'ets bon !! dur dur le dev serieux...
    Je vais passer au grep et sa va pas être de la tarte aussi ..

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Faire un petit menu en ksh
    Par laurentze dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 21/07/2010, 09h53
  2. Besoin d'aide pour faire un script
    Par shinux2004 dans le forum Langage
    Réponses: 4
    Dernier message: 16/07/2005, 16h44
  3. Faire apparaitre le menu général
    Par Terminator dans le forum IHM
    Réponses: 10
    Dernier message: 11/12/2004, 17h03
  4. faire un petit menu qui lance des processus
    Par tomsoyer dans le forum Linux
    Réponses: 4
    Dernier message: 30/11/2004, 18h37
  5. quel langage choisir pour faire de script sous windows
    Par pas05 dans le forum Langages de programmation
    Réponses: 7
    Dernier message: 18/11/2002, 22h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo