• [^] # Re: Script achevé

    Posté par (site web personnel) . En réponse au message utilisation de S_ISDIR et S_ISREG. Évalué à 1.

    Ca c'est pas malin:
    # Variables :
    # a = répertoires des auditeurs sous /home
    # b = rapports non classés
    # c = nom de la société auditée
    # d = numéro du dernier rapport classé
    # e = extension du rapport
    Aurait tu oublie la premiere maxime de la programmation utile:
    "utiliser des noms de variables significatifs"

    Autre chose:
    tu a du cd "/home/Linux/Profils/" partout dans ton script, typiquement
    une variable aurait ete tres utile au cas ou un changement du repertoire
    de base arriverait.

    Derniere chose:
    Les shells utilisents des alias pour permettrent aux utilisateurs
    de ne pas s'encombrer a retapper tout le temps les memes arguments
    mais dans un script il est bon de passer outres ceux ci pour eviter un
    maximum de comportement incoherents.
    De plus tout les unix non pas forcement les memes emplacements
    pour les commandes il est donc conseiller de creer des variables
    pour toutes les commandes utilisées.

    Ah et puis les cd dans un script c'est pas tres propre.

    ----------------------------------------------
    #! /bin/bash
    # Commandes
    LS=/bin/ls
    MV=/bin/mv
    SED=/bin/sed
    BASENAME=/usr/bin/basename
    TAIL=/usr/bin/tail
    MKDIR=/bin/mkdir

    # Variables :
    profils="/home/Linux/Profils"
    rapports="/home/Linux/Rapports"

    for auditeur in $profils/* ; do
    # traiter uniquement les répertoires
    if [ -d "$auditeur" ] ; then
    for doc in $auditeur/* ; do
    # traiter uniquement les fichiers
    if [ -f "$doc" ] ; then
    base=`$BASENAME $doc`
    # on extrait du nom du rapport le nom de la société
    # c'est à dire tout ce qui est avant le dernier point
    societe=${base%*.*}
    # on récupère l'extension du rapport à classer
    # c'est à dire tout ce qui est après le dernier point
    ext=.${base##*.}
    # un répertoire au nom de la société existe-t-il déjà?
    if [ -d "$rapports/$societe" ] ; then
    # on extrait de la liste le numero du dernier fichier ajouté
    # (celui dont le nombre est le plus grand)
    d=$($LS -1 "$rapports/$societe" | $TAIL -1 | sed 's/*\.\([0-9]+\)\.*/1円/g')
    # on incrémente ce numéro de 1
    # on lui accolle 2 '0'
    d=00$(($d + 1))
    # on extrait les 3 premiers chiffres (à partir de la droite)
    d=$(echo $d | sed 's/^0*\([0-9]\{3\}\)/1円/g')
    # on déplace enfin le rapport du répertoire de l'auditeur
    # dans le répertoire de la société en le renommant
    $MV "$doc" $rapports/$societe/$societe.$d$ext"
    else
    # on crée un répertoire au nom de la société
    $MKDIR "$rapports/$societe"
    # on y déplace alors le rapport en lui attribuant le numéro '001'
    $MV "$doc" "$rapports/$societe/$societe.001$ext"
    fi
    fi
    done
    fi
    done