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 :

Variables et assignation


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Avatar de GLDavid
    Homme Profil pro
    Head of Service Delivery
    Inscrit en
    Janvier 2003
    Messages
    2 891
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Head of Service Delivery
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 891
    Par défaut Variables et assignation
    Bonjour

    Dans ce script, je veux trouver un fichier selon sa date. Puis, je veux afficher le nom de ce fichier. Voici comment je fais :
    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
     
    #!/bin/bash
     
    REP=/home/gldavid/Subversion/Backup
    DAY_BEFORE=`expr \`date +"%d"\` - 1`
    REF=`date +"%Y"`"-"`date +"%m"`"-"$DAY_BEFORE
    FILE_REF=""
    for file in `ls $REP`
    do
            DATE=`stat -c "%z" $REP/$file | cut -f1 -d " "`
            if [ "$DATE" = "$REF" ]
            then
                    $FILE_REF=$REP/$file #Ligne qui bugge !
            fi
    done
    echo $FILE_REF
    Comme l'indique le code, j'ai une ligne qui ne marche pas et voici la sortie de mon script:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ./cleanSubversionBackup.sh: line 12: =/home/gldavid/Subversion/Backup/svndump28092006-200001.zip: Aucun fichier ou répertoire de ce type
    Qu'ai-je bien pû oublier ?
    Merci d'avance.

    @++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code :tagcode: ni le tag :resolu:

    Je ne répond à aucune question technique par MP.

  2. #2
    Membre expérimenté
    Avatar de GLDavid
    Homme Profil pro
    Head of Service Delivery
    Inscrit en
    Janvier 2003
    Messages
    2 891
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Head of Service Delivery
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 891
    Par défaut
    C'est bon, j'ai trouvé !
    Voici mon code au complet :
    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
     
    #!/bin/bash
     
    REP="/home/gldavid/Subversion/Backup"
    DAY_BEFORE=`expr \`date +"%d"\` - 1`
    REF=`date +"%Y"`"-"`date +"%m"`"-"$DAY_BEFORE
    for file in `ls $REP`
    do
            FIC=$REP/$file
            DATE=`stat -c "%z" $FIC | cut -f1 -d " "`
            if [ "$DATE" = "$REF" ]
            then
                    FILE_REF=$FIC
            fi
    done
    for fichier in `ls $REP`
    do
            if [ "$REP/$fichier" -ot $FILE_REF ]
            then
                    rm "$REP/$fichier"
            fi
    done
    C'est un script de nettoyage de backups subversion pour ne conserver que le plus récent (celui de la veille chez moi).

    @++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code :tagcode: ni le tag :resolu:

    Je ne répond à aucune question technique par MP.

  3. #3
    Membre éprouvé
    Inscrit en
    Décembre 2004
    Messages
    119
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 119
    Par défaut
    Pour trouver les fichiers de la veille, tu dois pouvoir ecrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    find $REP -daystart -type f -mtime 1
    A tester eventuellement, j'ai du rouvrir le man pour retrouver ca. ^^
    A+

  4. #4
    Membre expérimenté
    Avatar de GLDavid
    Homme Profil pro
    Head of Service Delivery
    Inscrit en
    Janvier 2003
    Messages
    2 891
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Head of Service Delivery
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 891
    Par défaut
    Remarque très intéressante jc
    Si ça peut alléger le code, je prend !

    GLDavid, qui fait maigrir ses codes mais pas ses poignets d'amour
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code :tagcode: ni le tag :resolu:

    Je ne répond à aucune question technique par MP.

  5. #5
    Membre Expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Par défaut
    Citation Envoyé par GLDavid
    Qu'ai-je bien pû oublier ?
    Juste pour l'explication, pour clarifier ta correction :
    Tu as oublié qu'une variable shell, en l-value - c'est à dire en membre de gauche de l'affectation, ne doit JAMAIS être préfixée par un $.

    En gros, on peut dire que VARIABLE représente le contenant, et que $VARIABLE expose le contenu (de VARIABLE - le contenant).

    C'est pour cela que ce code est invalide: On veut mettre "toto" dans un contenu, alors qu'il faut le mettre dans un contenant.

    Ces codes sont aussi invalides :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    export $VAR
    unset $VAR
    Car les fonctions export ou unset doivent porter sur un contenant, et pas un contenu.


    Bonne continuation.

  6. #6
    Membre expérimenté
    Avatar de GLDavid
    Homme Profil pro
    Head of Service Delivery
    Inscrit en
    Janvier 2003
    Messages
    2 891
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Head of Service Delivery
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 891
    Par défaut
    Citation Envoyé par 2Eurocents
    Juste pour l'explication, pour clarifier ta correction :
    Tu as oublié qu'une variable shell, en l-value - c'est à dire en membre de gauche de l'affectation, ne doit JAMAIS être préfixée par un $.

    En gros, on peut dire que VARIABLE représente le contenant, et que $VARIABLE expose le contenu (de VARIABLE - le contenant).

    C'est pour cela que ce code est invalide: On veut mettre "toto" dans un contenu, alors qu'il faut le mettre dans un contenant.

    Ces codes sont aussi invalides :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    export $VAR
    unset $VAR
    Car les fonctions export ou unset doivent porter sur un contenant, et pas un contenu.


    Bonne continuation.
    Tout à fait mon cher fillot !
    Voilà qui est bien dit et qui me servira de leçon et qui m'apprendra à moins faire de Perl et de Java

    @++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code :tagcode: ni le tag :resolu:

    Je ne répond à aucune question technique par MP.

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 03/03/2013, 18h37
  2. Problème variable parfois assignée, parfois pas
    Par Ragnarock dans le forum ASP.NET MVC
    Réponses: 1
    Dernier message: 31/01/2012, 17h51
  3. Réponses: 13
    Dernier message: 30/05/2006, 16h00
  4. Réponses: 2
    Dernier message: 13/03/2006, 11h47
  5. [VB.Net]Comment assigner contenu variable> nom variable ?
    Par jazz matazz dans le forum VB.NET
    Réponses: 4
    Dernier message: 03/02/2006, 17h28

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