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 read ?


Sujet :

Linux

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 31
    Par défaut Problème avec read ?
    Salut,

    Un petit problème avec mon script bash.

    J'utilise "read" pour saisir un nom de fichier 'log' en fin de script. Seulement, comme j'ai une vérification, une erreur se produit si je mets un espace blanc. Si j'entre "test tout naze" sur un "read mavariable", je souhaiterais qu'il prenne en compte les espaces comme tel, *et non* comme des séparateurs, me sortant alors "test" "tout" "naze" (3 chaînes).

    Voilà le bout de script qui doit me permettre d'entrer et de valider un nom de sauvegarde pour mon fichier, peut-être que je cherche plus compliqué que cela ne l'est réellement, et que j'ai mal construit la chose...

    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
    function save(){
    	function boucle(){
    		until [ $nom ]
    		do
    			echo "Entrez le nom du fichier de sauvegarde (la terminaison '.log' sera ajoutée) :"
    			read nom
    		done
    	}
    	boucle
     
    	while [ "$check" != yYnN ]
    	do
    		echo "êtes-vous certain d'utiliser '$nom.log' comme nom de sauvegarde ? [y/n]"
    		read -s -n1 check
    		case "$check" in
    			[yY])
    			mv $log $nom.log
    			log="$nom.log"
    			break;;
    			[nN])
    			nom=""
    			boucle;;
    		esac
    	done
    }
    Bonne journée.

  2. #2
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 31
    Par défaut
    Merci pour la correction de cette première erreur, mais j'ai toujours le problème principal, à savoir l'erreur lié à un nom entré avec des espaces. Voici ce que me renvoie le terminal, à titre d'exemple :

    Entrez le nom du fichier de sauvegarde (la terminaison '.log' sera ajoutée) :
    test
    êtes-vous certain d'utiliser 'test.log' comme nom de sauvegarde ? [y/n] (j'ai appuyé sur n)
    Entrez le nom du fichier de sauvegarde (la terminaison '.log' sera ajoutée) :
    test naze
    ./bench: line 253: [: test: unary operator expected
    Entrez le nom du fichier de sauvegarde (la terminaison '.log' sera ajoutée) :
    J'espère que ce sera plus explicite.
    Merci.

  4. #4
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 31
    Par défaut
    Désolé d'insister (), mais...

    Entrez le nom du fichier de sauvegarde (la terminaison '.log' sera ajoutée) :
    test naze
    êtes-vous certain d'utiliser 'test naze.log' comme nom de sauvegarde ? [y/n]
    Souhaitez-vous visualiser le fichier 'test naze.log' ? [y/n]
    test: Aucun fichier ou répertoire de ce type
    naze.log: Aucun fichier ou répertoire de ce type
    Il me fait bien l'erreur... C'est à dire que le "read" prend l'espace comme un séparateur, et crée 2 variables "test" et "naze", mais le test n'attend qu'une valeur unique (enfin, c'est comme ça que je l'interprète), et ça foire.

  6. #6
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Par défaut
    au pif, essaye de remplacer par sinon ajoute un "set -x" pour avoir quelques infos de déboggage.

Discussions similaires

  1. Réponses: 1
    Dernier message: 28/09/2007, 21h05
  2. [bash][Débutant] Erreurs d'exécution avec read
    Par Alcatîz dans le forum Shell et commandes GNU
    Réponses: 6
    Dernier message: 14/09/2007, 15h28
  3. lecture socket avec read une fois seulement
    Par andromeda dans le forum Entrée/Sortie
    Réponses: 8
    Dernier message: 25/07/2007, 08h57
  4. lecture d'un fichier avec read
    Par seb__ dans le forum C
    Réponses: 6
    Dernier message: 01/10/2006, 18h42
  5. Pb avec read et write sous vc++
    Par Jbx 2.0b dans le forum SDL
    Réponses: 13
    Dernier message: 28/04/2006, 14h58

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