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 :

Concaténer un char et un num dans une variable


Sujet :

Shell et commandes GNU

  1. #1
    Membre habitué
    Inscrit en
    Juin 2004
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 11
    Par défaut Concaténer un char et un num dans une variable
    hello à tous,

    petite question pour les développeurs unix, j'essaie d'afficher le résultat d'une concaténation entre un char et un num sous unix et cela ne marche pas. Voici le bout de code en question

    previousMonth=$((`date -u +%m` -1))
    --> corresponds 9
    if [ 1 <= $previousMonth <= 9 ]; then
    echo "0$previousMonth"
    --> il m'affiche 9 au lieu de 09

    PS : y a t il un moyen avec date d'avoir le format mm dans une variable d'affectation

    merci

  2. #2
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    previousMonth=$((`date -u +%m` -1))
    printf "%02d" $previousMonth
    Cela permet même d'éviter le test sur l'intervalle 1-9
    Si tu veux résoudre un problème de formattage, printf (f pour formatté) est ton amie

    Bon courage.

    P.S. Peux tu, s'il te plait, éditer ton message afin de mettre le code entre balises [ code ] et [ /code ] (à taper sans les blancs). Cela améliore la lisibilité du forum et tout le monde t'en sera reconnaissant

  3. #3
    Membre Expert

    Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 296
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    previousMonth=$((`date -u +%02m` -1))
    encore plus simple .... formatage directe via la commande date !

  4. #4
    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 Re: concaténer un char et un num dans une variable en script
    Citation Envoyé par ade05fr
    PS : y a t il un moyen avec date d'avoir le format mm dans une variable d'affectation
    J'avais pas tout lu ...

    En faisant ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    previousMonth=$((`date -u +%m` -1))
    Tu récupère le mois, dans la date par une exécution en backticks ``.

    Par contre, tu l'évalues en nombre avec le $((...)), donc même si tu récupères 09, le $((...)) le transforme en 9. Ce comportement est normal, si tu veux effectuer le -1 à ce moment, mais te prive du zero.

    Dans ton cas, ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    previousMonth=`date -u +%m -d -1month`
    sera beaucoup plus pertinent et rendra le formattage superflu.

  5. #5
    Expert confirmé
    Avatar de Katyucha
    Femme Profil pro
    DevUxSecScrumOps Full Stack Bullshit
    Inscrit en
    Mars 2004
    Messages
    3 287
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Irlande

    Informations professionnelles :
    Activité : DevUxSecScrumOps Full Stack Bullshit

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 287
    Par défaut
    Citation Envoyé par MarcG
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    previousMonth=$((`date -u +%02m` -1))
    encore plus simple .... formatage directe via la commande date !
    Attention , la commande date ne marche pas pareil sous tout les Unix.
    Comme il parle d'Unix, je pense qu'il ne parle pas de Linux et un "date" sous Solaris ou Linux ...rien à voir!

  6. #6
    Membre habitué
    Inscrit en
    Juin 2004
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 11
    Par défaut
    merci, seul la méthode avec printf fonctionne, le reste est dédié à du linux...

    encore merci.

    bonne soirée

  7. #7
    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
    Un petit tag [Résolu], s'il vous plait ??? En cliquant sur le bouton du même nom, en bas à gauche de l'interface, lors de la visualisation du fil.

    Cela permettra à tous de savoir que ce problème n'en est plus un et à ceux qui ont le même soucis de savoir qu'il existe une réponse

    Ce message et tout message y faisant directement référence seront supprimés lorsque le fil sera marqué [Résolu].

    Merci d'avance.

Discussions similaires

  1. comment avoir plus de 4000 Char dans une variable CLOB?
    Par makohsarah dans le forum PL/SQL
    Réponses: 11
    Dernier message: 29/04/2010, 14h40
  2. [Think Pascal] Mettre la lecture de la touche ENTRER dans une variable de type char
    Par inidark dans le forum Autres IDE
    Réponses: 1
    Dernier message: 21/05/2009, 23h21
  3. Réponses: 10
    Dernier message: 12/03/2009, 18h35
  4. UPDATE en fonction de la présence d'un num dans une autre table
    Par Zak Blayde dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 19/07/2007, 11h41
  5. Réponses: 6
    Dernier message: 24/07/2003, 12h39

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