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 :

[BASH] - Problème d'espace dans un printf


Sujet :

Linux

  1. #1
    Membre éclairé
    Avatar de ArKam
    Inscrit en
    Mars 2007
    Messages
    528
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Mars 2007
    Messages : 528
    Points : 679
    Points
    679
    Par défaut [BASH] - Problème d'espace dans un printf
    Bien le bonjour à vous.

    J'ai aujourd'hui un petit soucis d'espace en trop dans un de mes scripts de démarrage.

    Pour faire simple, j'essaye d’écrire une phrase de longueur x à laquelle j'ajoute un espace (des décalages) de y puis la note [OK] ou [NOK]

    Mon script fait bien ce que je lui demande, à une exception prêt, il m'ajoute un espace non désiré.


    Donc, voici ce que je veux:



    Et voici ce que j'obtiens:



    Je met mon script ici:

    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
     
    #!/bin/bash
    #
    ### BEGIN INIT INFO
    # Provides:          apache
    # Required-Start:    $remote_fs $syslog
    # Required-Stop:     $remote_fs $syslog
    # Should-Start:      $network $time
    # Should-Stop:       $network $time
    # Default-Start:     2 3 4 5
    # Default-Stop:      0 1 6
    # Short-Description: Start and stop the Apache HTTP server daemon
    # Description:       Controls the Apache HTTP server daemon "httpd"
    ### END INIT INFO
     
    ### PRIMARY VARS
     
    NB_COL=$(tput cols)
    BINARY_NAME='httpd'
    BINARY_PATH="/usr/local/apache2/usr/bin/$BINARY_NAME"
    CONF_FILE='/etc/apache2/httpd.conf'
     
    ### SENTENCES VARS
     
    BINARY_FOUND="Le binaire apache $BINARY_NAME a été trouvé."
    BINARY_NOT_FOUND="Le binaire apache $BINARY_NAME n'a pas été trouvé."
     
    CONF_FILE_FOUND="Le fichier de configuration apache a été trouvé."
    CONF_FILE_NOT_FOUND="Le fichier de configuration apache n'a pas été trouvé."
     
    ### WIDTH CALC
     
    WIDTH_BINARY_FOUND=$(($NB_COL - ${#BINARY_FOUND}))
    WIDTH_BINARY_NOT_FOUND=$(($NB_COL - ${#BINARY_NOT_FOUND}))
    WIDTH_CONF_FILE_FOUND=$(($NB_COL - ${#CONF_FILE_FOUND}))
    WIDTH_CONF_FILE_NOT_FOUND=$(($NB_COL - ${#CONF_FILE_NOT_FOUND}))
     
    if test -d "$BINARY_PATH"; then
     
            printf "$BINARY_FOUND %*s\n" $WIDTH_BINARY_FOUND "[OK]"
            exit 0
     
    else
            printf "$BINARY_NOT_FOUND %*s\n" $WIDTH_BINARY_NOT_FOUND "[NOK]"
    fi
     
    if test -e "$CONF_FILE"; then
     
            printf "$CONF_FILE_FOUND %*s\n" $WIDTH_CONF_FILE_FOUND "[OK]"
            exit 0
     
    else
            printf "$CONF_FILE_NOT_FOUND %*s\n" $WIDTH_CONF_FILE_NOT_FOUND "[NOK]"
    fi
     
     
    ### ARGS CONTROLS
    Faites pas gaffe aux variables inutiles, ce script est en cours de test, je ferais le ménage après.

    Pour obtenir le premier résultat, je suis obligé de rajouter un -1 aux opérations de calcul de la longueur, perso ça me dérange pas plus que ça, mais tant qu'à faire j'aimerais avoir un truc clean.

    Merci de votre aide par avance.

  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,

    c'est toi-même qui l'ajoute dans le format du printf

    fais plutôt ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printf "${BINARY_FOUND}%*s\n" $WIDTH_BINARY_FOUND "[OK]"

  3. #3
    Membre éclairé
    Avatar de ArKam
    Inscrit en
    Mars 2007
    Messages
    528
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Mars 2007
    Messages : 528
    Points : 679
    Points
    679
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    Bonjour,

    c'est toi-même qui l'ajoute dans le format du printf

    fais plutôt ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printf "${BINARY_FOUND}%*s\n" $WIDTH_BINARY_FOUND "[OK]"
    Cool, effectivement c’était bien ça.

    Je cherchais justement un moyen de récupérer la valeur de la variable sans les '' merci beaucoup

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

Discussions similaires

  1. Problèmes d'espaces dans mes entrées
    Par Sanka76 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 12/02/2007, 10h35
  2. Réponses: 8
    Dernier message: 08/02/2007, 18h46
  3. [CSS] Problème d'espaces dans une liste
    Par sylsau dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 03/08/2006, 14h46
  4. Problème d'espace dans les variables
    Par crocmorts dans le forum Langage
    Réponses: 3
    Dernier message: 26/04/2006, 16h12
  5. Problème d'espace dans les varibles passées par GET !
    Par boukay dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 07/03/2006, 15h36

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