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

Unix Discussion :

aide script unix


Sujet :

Unix

  1. #1
    Membre du Club
    Inscrit en
    Avril 2010
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 105
    Points : 63
    Points
    63
    Par défaut aide script unix
    bonjour à tous,

    voila, je révise des partiels et j'aimerai votre aide. J'ai pris le partiel de l'an dernier et l'ai refait. Pourriez vous lire ce que j'ai fait et si besoin corriger?De plus, je ne sais pas répondre à deux questions pourriez vous m'aider?

    voici donc tout ca :

    1 - Ecrire un script qui vérifie l'existance dans le répertoire courant du fichier dont le nom est passé en paramètre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    NomFichier = « monFichier »
    If (  -e NomFichier) then 
    	Echo « NomFichier se trouve dans le répertoire courant »
    Endif
    2 - Ecrire un script qui vérifie que le nom passé en paramètre est un fichier ou un répertoire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if ($1 == "") then
       echo "aucun nom de fichier en parametre"
    else if (-d $1) then
       echo "$1 est un repertoire"
       else if (-f $1) then
          echo "$1 est un fichier"
          else
             echo "$1 n'est ni un fichier ni un paramètre"
    3 - Ecrire un script qui qui concatène puis trie deux fichiers file1 et file2 dans un nouveau fichier file3 et affiche le nombre total de lignes. (les noms des trois fichiers doivent être passés en paramètre)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    cat file1 file2 | sort > file3
    set nblig=`cat file3|wc -l
    echo "Le fichier file contient $nblig lignes"
    4 - Ecrire un script formé de deux fonctions. la fonction "somme" qui calcul la somme des nombres saisis au clavier et la fonction affiche qui affiche le résultat à l'écran
    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
    cat file1 file2 | sort > file3
    set nblig=`cat file3|wc -l
    echo "Le fichier file contient $nblig lignes"
    4 – 
    Somme( )
    {
    	Echo « chiffre 1 : « 
    	Read a	
    	Echo « chiffre 2 : « 
    	Read b
    	C = a + b 
    	Affiche $c
    }
    Affiche( )
    {
    	Echo « $1 »
    }
    5 - modifier le script précédent ("4") pour demander à l'utilisateur de saisir au clavier le (ou les) noms de fichiers qu'il aurait oublié d'indiquer en lancant le script.
    je ne sais pas
    6 - Ecrire un script de shell qui permet de traiter un répertoire en transformant les noms des fichiers du majuscules aux minuscules
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Trouver TousFichier()
    {
    $NomFichier
    $NouveauNom
    for $NomFichier in $1 ; do  #$1 est le répertoire
    	$NouveauNom =`echo $ NomFichier | tr 'A-Z' 'a-z'`
    	mv $NomFichier $NouveauNom
    done
    }
    7 - modifier le script précédent ("6") pour pouvoir traiter le cas ou l'argument est un fichier
    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
    Trouver TousFichier()
    {
    $NomFichier
    $NouveauNom
    if [ ! -f $1 ] ; then 
    {
    echo « vous avez passé un fichier et non un répertoire en paramètre »
    }
    else 
    {
    for $NomFichier in $1 ; do  #$1 est le répertoire
    	   	  $NouveauNom =`echo $ NomFichier | tr 'A-Z' 'a-z'`
    			mv $NomFichier $NouveauNom
    done
    }
    fi
    }
    8 - corriger le script précédent ("7") pour tenir compte des fichiers qui peuvent porter le même nom ou l'utilisateur passe plus d'un argument
    je ne sais pas
    9 - Améliorer le script précédent en lui ajoutant une option -m pour les minuscules et -M pour les majuscules
    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
    Trouver TousFichier() #$1  nomrépertoire, $2 : -m ou -M
    {
    $NomFichier
    $NouveauNom
    if [ ! -f $1 ] ; then 
    {
    echo « vous avez passé un fichier et non un répertoire en paramètre »
    }
    else 
    {
    	If[$2 == ‘m’] ; then
    {
    for $NomFichier in $1 ; do  #$1 est le répertoire
    	   	 	 $NouveauNom =`echo $ NomFichier | tr 'A-Z' 'a-z'`
    				mv $NomFichier $NouveauNom
    done
    }
    else if[$2 = ‘M’] ; then 
    {
    for $NomFichier in $1 ; do  #$1 est le répertoire
    	   	 	   $NouveauNom =`echo $ NomFichier | tr 'a-z' 'A-Z'`
    				  mv $NomFichier $NouveauNom
         done
    }
    else{
    		Echo ‘option non reconnue’
    }
    fi
    		fi
     
    }
    fi
    }

    merci d'avance pour votre aide, je ne suis vraiment pas bon en script unix
    bonne journée à tous !

  2. #2
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Points : 28 119
    Points
    28 119
    Par défaut
    Bonjour,

    Citation Envoyé par nagadscar Voir le message
    voila, je révise des partiels et j'aimerai votre aide. J'ai pris le partiel de l'an dernier et l'ai refait. Pourriez vous lire ce que j'ai fait et si besoin corriger?De plus, je ne sais pas répondre à deux questions pourriez vous m'aider?

    voici donc tout ca :

    1 - Ecrire un script qui vérifie l'existence dans le répertoire courant du fichier dont le nom est passé en paramètre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    NomFichier = « monFichier »
    If (  -e NomFichier) then 
    	Echo « NomFichier se trouve dans le répertoire courant »
    Endif
    Nop :
    • tu ne prends pas le nom de fichier en parametre
    • tu oublies le $NomFichier
    • Ce ne sont pas des parentheses, mais des crochets qu'il faut utiliser
    • Echo n'existe pas. C'est echo que tu souhaites appeler (sans majuscule).
    • De meme pour If au lieu de if
    • Ce n'est pas Endif, mais fi
    • Si tu veux ecrire then sur la meme ligne que if, il faut un ; apres le crochet fermant


    Je te conseille de bien te relire, et de tester le code que tu ecris (si tu n'as pas la possibilite d'installer un Unix ou un Linux (dont les shells sont tres proches), utilises un live-CD, comme belenix pour Solaris).

    Je continue avec la suite si j'ai un peu de temps.
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

  3. #3
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Points : 28 119
    Points
    28 119
    Par défaut
    Citation Envoyé par nagadscar Voir le message
    2 - Ecrire un script qui vérifie que le nom passé en paramètre est un fichier ou un répertoire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if ($1 == "") then
       echo "aucun nom de fichier en parametre"
    else if (-d $1) then
       echo "$1 est un repertoire"
       else if (-f $1) then
          echo "$1 est un fichier"
          else
             echo "$1 n'est ni un fichier ni un paramètre"
    Memes remarques que precedemment :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    if [ $1 == "" ] ; then
       echo "aucun nom de fichier en parametre"
    else if [ -d $1 ]       ; then
       echo "$1 est un repertoire"
       else if [ -f $1 ] ; then
          echo "$1 est un fichier"
          else
             echo "$1 n'est ni un fichier ni un paramètre"
            fi
         fi
    fi

    3 - Ecrire un script qui qui concatène puis trie deux fichiers file1 et file2 dans un nouveau fichier file3 et affiche le nombre total de lignes. (les noms des trois fichiers doivent être passés en paramètre)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    cat file1 file2 | sort > file3
    set nblig=`cat file3|wc -l
    echo "Le fichier file contient $nblig lignes"
    Idem : manque les $, tu ne prends pas les noms de fichier en parametre, ...

    4 - Ecrire un script formé de deux fonctions. la fonction "somme" qui calcul la somme des nombres saisis au clavier et la fonction affiche qui affiche le résultat à l'écran
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Somme( )
    {
    	Echo « chiffre 1 : « 
    	Read a	
    	Echo « chiffre 2 : « 
    	Read b
    	C = a + b 
    	Affiche $c
    }
    Affiche( )
    {
    	Echo « $1 »
    }
    Tu as toujours un soucis de majuscules. En script, c ou C sont deux entites distinctes !!
    Conseil : tout ecrire en minuscule. Les majuscules sont reservees a la definition de constantes, dont le nom est entierement en majuscules.

    Sinon, tu as bien ecris les 2 fonctions, mais ne manque-t-il pas un appel a ces fonctions, histoire que le script fasse quelque chose si on le lance ?

    5 - modifier le script précédent ("4") pour demander à l'utilisateur de saisir au clavier le (ou les) noms de fichiers qu'il aurait oublié d'indiquer en lancant le script.
    je ne sais pas
    Dans le 2, tu testes s'il n'y a pas de parametres. Ce pourrait etre un debut : s'il n'y a pas de parametres, demander a l'utilisateur de les saisir.
    Dans somme(), tu arrives a lire des chiffres. Est-ce si different de lire des noms de fichier ?

    6 - Ecrire un script de shell qui permet de traiter un répertoire en transformant les noms des fichiers du majuscules aux minuscules
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Trouver TousFichier()
    {
    $NomFichier
    $NouveauNom
    for $NomFichier in $1 ; do  #$1 est le répertoire
    	$NouveauNom =`echo $ NomFichier | tr 'A-Z' 'a-z'`
    	mv $NomFichier $NouveauNom
    done
    }
    Le nom de ta fonction ne peut contenir d'espace : trouver_tous_fichiers()
    A quoi servent les deux lignes $NomFichier et $NouveauNom ?
    La syntaxe du for n'est pas celle que tu crois, et ne permet pas de lister le contenu du répertoire tel que tu l'as écrit.
    Les arguments de tr sont inverses

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for nom_fichier in `ls $1` ; do
        NouveauNom=`echo $ NomFichier | tr 'a-z' 'A-Z'`
        mv $NomFichier $NouveauNom

    Corrige deja tout ceci, et refais les exercices suivants. N'hesite pas a poser des questions si tu ne comprends pas.
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

  4. #4
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Points : 7 882
    Points
    7 882
    Par défaut
    Citation Envoyé par gangsoleil Voir le message
    utilises un live-CD, comme belenix pour Solaris
    OpenSolaris est aussi un live CD.
    ɹǝsn *sıɹɐlos*

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

Discussions similaires

  1. Demande aide script UNIX
    Par indian_angel dans le forum Shell et commandes POSIX
    Réponses: 1
    Dernier message: 21/01/2012, 14h36
  2. [Shell] Aide à la création d'un script UNIX
    Par Masakatto dans le forum Linux
    Réponses: 2
    Dernier message: 10/02/2008, 18h01
  3. Aide script shell unix, creation utilisateur
    Par jazzparadise dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 24/05/2007, 12h25
  4. aide script unix
    Par cora1 dans le forum Linux
    Réponses: 1
    Dernier message: 28/02/2007, 18h03
  5. Little Script UNIX ==> A Passer sous Windows
    Par argoet dans le forum Windows
    Réponses: 5
    Dernier message: 15/11/2004, 16h36

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