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 :

Variable de nom de fichier avec echo, erreur bête


Sujet :

Shell et commandes GNU

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 144
    Points : 145
    Points
    145
    Par défaut Variable de nom de fichier avec echo, erreur bête
    Bonjour,

    Je suis en #!/bin/bash

    Quand je rentre la ligne simple suivante, ça marche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo -e "${txtresultat}" >> ~/mon-fich.txt
    En revanche, dès que je veux donner un nom variable à mon fichier, j'obtiens des "Aucun fichier ou dossier de ce type" alors que le but des >> est justement de créer ce fichier lorsqu'il n'existe pas... :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #Ne marchent pas :
    echo -e "${txtresultat}" >> "~/${nomfichier}"
    echo -e "${txtresultat} >> ~/${nomfichier}"
    Je cherche à rentrer mes résultats sous le nom d'un fichier variable (le nom ne comporte pas de caractères spéciaux ou d'espaces).
    Si vous avez des idées, merci

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

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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "texte" >> ~/"$nomFic"
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 563
    Points : 460
    Points
    460
    Par défaut
    Bonjour ou :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo -e "${txtresultat}" >> "${HOME}/${nomfichier}"
    Sous Kubuntu 20.04

  4. #4
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 278
    Points : 12 726
    Points
    12 726
    Par défaut
    @N_BaH et @hizoka:
    Et là, je vois bien papa6 demander: mais pourquoi ?
    Cordialement.

  5. #5
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 458
    Points
    13 458
    Par défaut
    Nom : parskeu200.jpg
Affichages : 1546
Taille : 17,7 Ko
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 144
    Points : 145
    Points
    145
    Par défaut
    Merci à vous pour les essais, mais ça ne marche pas, ni la réponse de N_BaH, ni celle d'hizoka... (avec ou sans -e)

    J'ai bien sûr essayé à nouveau, mais j'avais tenté de nombreuses variantes avant de poster la question sur le forum. J'ai plus l'impression qu'il doit s'agir d'une particularité, d'où ma précision du #!/bin/bash (je pourrais essayer quelque chose d'autre, mais il me semble que le bash est le plus performant)

    À noter que j'appelle l'echo dans deux boucles de fonctions, mais je ne vois pas le problème.
    Et avant de lancer l'echo, j'affiche le nom du fichier à l'écran, pour vérifier que tout est correct, et c'est le cas.

    Je ne sais pas si vous avez d'autres idées ? merci

  7. #7
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 278
    Points : 12 726
    Points
    12 726
    Par défaut
    Peux-tu nous montrer ton script et aussi nous faire:
    Car les 2 propositions devraient fonctionner...

    Dans un premier temps, je penche sur un problème d'encodage unix/dos de ton script.
    Cordialement.

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 550
    Points : 19 383
    Points
    19 383
    Par défaut
    À noter que j'appelle l'echo dans deux boucles de fonctions, mais je ne vois pas le problème.
    montre-nous ton script, parce que nous non plus !
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 144
    Points : 145
    Points
    145
    Par défaut
    J'ai l'impression que disedorg a peut-être trouvé (problème d'encodage UTF-8 ?) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    file lst-fich-a.sh 
    lst-fich-a.sh: Bourne-Again shell script, UTF-8 Unicode text executable
    Et mon script (le problème est à la ligne 26) :
    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    #!/bin/bash
     
    FntLstFich ()
    {
     
    #	echo "À ${fich}, rappel des variables, qmd5 = ${qmd5}, peri = ${peri} et $1 = ${1}."
     
    	for fich in *
    		do
    		if [ -f "$fich" ]
    		then
    			datefich=`stat -c %y "${fich}"`
    			taille=`stat -c %s "${fich}"`
    			if [ $qmd5 = 'o' ] || [ $qmd5 = 'oui' ] || [ $qmd5 = 'y' ] || [ $qmd5 = 'yes' ]
    				then md5=(`md5sum "${fich}"`:0:31)
    				else md5=" "
    			fi
    			chemin=`pwd`
     
    			maintenant=`date +%d/%m/%y`
    			echo ${maintenant}
    			nomfichresultat="lst-fich-${peri}-${maintenant}.txt"
    			echo ${nomfichresultat}
    			txtresultat="${peri}\t${fich}\t${chemin}\t${datefich}\t${taille}\t${md5}"
     
    		    echo -e "${txtresultat}" >> "${HOME}/${nomfichresultat}"
    	    fi
    	done
     
    }
     
    FntDescendArbo ()
    {
     
    for i in *
    do
    	if [ -d "${i}" ]
    		then
    		  cd "${i}"
    		  echo "Dans `pwd`"
    		  FntLstFich
    		  FntDescendArbo
    #		  echo "On s'apprète à remonter"
    		  cd ..
    #		else
    #		  echo "La nature de ${i} n'est pas identifiée."
    	fi
     
    done
     
    }
     
    read -p "Entrez le nom du périphérique à scanner (compaq64 par défaut) : " peri
    if [ -z $peri ]
    then
      peri='compaq64'
      export peri
    fi
     
    read -p 'Voulez-vous effectuer un MD5SUM, o/n, n (non) par défaut : ' qmd5
    if [ -z $qmd5 ]
    then
      qmd5='n'
      export qmd5
    fi
     
    FntDescendArbo

  10. #10
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 278
    Points : 12 726
    Points
    12 726
    Par défaut
    Ton problème vient de la variable ${maintenant} : tu n'a pas le droit de mettre des "/" dans les noms de fichiers. Ici le système pense que c'est un répertoire...
    Cordialement.

  11. #11
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 144
    Points : 145
    Points
    145
    Par défaut
    Rhooo... merci disedorgue
    Vraiment j'avais la tête ailleurs, j'avais fait un bête copié-collé pour la date, mais bien sûr que je n'essaie même pas par habitude de mettre des / dans les noms de fichiers, même en les échappant...

    Super en tout cas, résolu ! et merci à vous tous

  12. #12
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 278
    Points : 12 726
    Points
    12 726
    Par défaut
    Un petit conseil: pour les dates, choisi plutôt l'ordre '%y%m%d' qui est plus naturel en informatique: on peut trier dans cet ordre là sans passer par des transformations
    Cordialement.

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

Discussions similaires

  1. [Batch] Récuperer en variable une partie du nom de fichier avec un Batch sous Windows 7 ?
    Par jc-macintosh dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 22/05/2016, 14h03
  2. Load data avec une variable pour nom de fichier
    Par kelk1 dans le forum SQL Procédural
    Réponses: 6
    Dernier message: 14/01/2016, 14h41
  3. Réponses: 3
    Dernier message: 29/06/2015, 15h01
  4. créer nom de fichiers avec variables
    Par Infra_Red dans le forum Fortran
    Réponses: 4
    Dernier message: 16/06/2010, 21h14
  5. [XLST] Nom de fichier avec variable
    Par Wells dans le forum XSL/XSLT/XPATH
    Réponses: 11
    Dernier message: 07/05/2008, 09h37

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