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

Linux Discussion :

problème avec le nom du fichier script


Sujet :

Linux

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 8
    Points : 4
    Points
    4
    Par défaut problème avec le nom du fichier script
    Je rencontre le problème suivant, avec le script ci dessous :
    - /opt/product/arsystem/test/LicenseReport.txt.1298111407
    ./script.sh: substitution incorrecte

    Je souhaite juste récupérer "LicenseReport.txt.1298111407", dans la variable i, et non pas le chemin complet du fichier.

    #!/bin/sh

    # This would run the loop exactly once, with i="/opt/product/arsystem/test/".
    # for i in /opt/product/arsystem/test/

    # I think you meant this, to match all files in that dir
    for i in /opt/product/arsystem/test/*
    do
    # just a sanity check. Don't run file on directories.
    [ -d "$i" ] && continue
    # newline here
    file "$i"
    echo $i
    x=${i##*.}
    echo $z
    echo $x
    echo $t
    echo $r
    # wrong kind of brackets, and you missed one '
    z=${perl -e 'print time'}
    # z=$(perl -e 'print time')
    r=LicenseReport.txt.$x
    t=${echo $z-$x|bc}
    if [ "$t" -gt 86400 ];
    then
    # newline here
    tar -cvf $r.tar $r


    else
    # can't leave a branch empty.
    # Use : whenever you need to do nothing.
    :
    fi
    done

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 595
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 595
    Points : 19 480
    Points
    19 480
    Par défaut
    Bonjour,

    et, l'erreur signalée ne vient pas de là, mais de là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    z=${perl -e 'print time'}
    alors que ça devrait être :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    z=$(perl -e 'print time')
    pareil pour t=

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Apres correction, il signale l'erreur :

    - ./script.sh: erreur de syntaxe ligne 20: `z=$' inattendue

    #!/bin/sh

    # This would run the loop exactly once, with i="/opt/product/arsystem/test/".
    # for i in /opt/product/arsystem/test/

    # I think you meant this, to match all files in that dir
    for i in /opt/product/arsystem/test/*
    do
    # just a sanity check. Don't run file on directories.
    #[ -d "$i" ] && continue
    # newline here
    file "$i"
    echo $i
    x=${i##*.}
    echo $z
    echo $x
    echo $t
    echo $r
    # wrong kind of brackets, and you missed one '
    z=$(perl -e 'print time')
    # z=$(perl -e 'print time')
    r=LicenseReport.txt.$x
    t=${echo $z-$x|bc}
    if [ "$t" -gt 86400 ];
    then
    # newline here
    tar -cvf $r.tar $r


    else
    # can't leave a branch empty.
    # Use : whenever you need to do nothing.
    :
    fi
    done

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    En fait, je souhaite que le echo $i, m'affiche juste le nom du fichier et non pas le chemin complet :

    /opt/product/arsystem/test/LicenseReport.txt.1298111407: commandes
    /opt/product/arsystem/test/LicenseReport.txt.1298111407
    ./script.sh: substitution incorrecte

    Je n'arrive pas à lui mettre uniquement la valeur du nom du fichier.

    Merci tout de meme pour la reponse

  5. #5
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 595
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 595
    Points : 19 480
    Points
    19 480
    Par défaut
    je serais toi, je réécrirais tout, pas à pas, et en ajoutant une brique à la fois; proprement et correctement indenté :
    Code #1 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #!/bin/sh
     
    baseDir=/opt/product/arsystem/test
    for file in $baseDir/*
    do
       if [ -f "$file" ]
       then
          echo "${file##*/}"
       fi
    done

    pourquoi utiliser perl, tu n'as pas date pour faire date +%s ?

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    En fait, je souhaite que le echo $i, m'affiche juste le nom du fichier et non pas le chemin complet :

    /opt/product/arsystem/test/LicenseReport.txt.1298111407: commandes
    /opt/product/arsystem/test/LicenseReport.txt.1298111407
    ./script.sh: substitution incorrecte

    Je n'arrive pas à lui mettre uniquement la valeur du nom du fichier.

    Merci tout de meme pour la reponse

  7. #7
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 595
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 595
    Points : 19 480
    Points
    19 480
    Par défaut
    au temps pour moi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var=/opt/product/arsystem/test/LicenseReport.txt.1298111407
    echo "${var##*/}"
    LicenseReport.txt.1298111407
    j'ai corrigé mes posts précédents.

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    je serais toi, je réécrirais tout, pas à pas, et en ajoutant une brique à la fois; proprement et correctement indenté :
    Code #1 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #!/bin/sh
     
    baseDir=/opt/product/arsystem/test
    for file in $baseDir/*
    do
       if [ -f "$file" ]
       then
          echo "${file##/*}"
       fi
    done

    ./test.sh: substitution incorrecte

    pourquoi utiliser perl, tu n'as pas date pour faire date +%s ?
    En fait j'ai commencer par executer chaque ligne dans l'interface et date+%s ne fonctionnait pas

Discussions similaires

  1. Réponses: 0
    Dernier message: 16/02/2015, 14h54
  2. Problème avec le nom du fichier créé
    Par seb68270 dans le forum C++
    Réponses: 3
    Dernier message: 04/04/2014, 11h54
  3. Réponses: 1
    Dernier message: 10/06/2011, 12h07
  4. problème avec le nom d'un fichier
    Par mongilotti dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 01/10/2010, 17h04
  5. problème avec le nom d'un fichier
    Par mongilotti dans le forum Administration système
    Réponses: 2
    Dernier message: 30/09/2010, 23h21

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