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] Question sur la manipulation de variables


Sujet :

Linux

  1. #1
    Membre confirmé
    Homme Profil pro
    Technophile Web
    Inscrit en
    Mai 2007
    Messages
    930
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Technophile Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 930
    Points : 467
    Points
    467
    Par défaut [Bash] Question sur la manipulation de variables
    Bonjour @ tous,

    une chtite question si vous me le permettez
    je manipule la variable kernel (uname -r)
    je cherche à reprendre le 7 dans 2.66.1-44.fc7

    mais je fais deux lignes et cela marche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    kernel=$(uname -r) # sous fedora
    release=${kernel:13:1}
    cela me donne bien 7 (la version utilisée)

    sinon la ligne ou je combine les deux commandes ne fonctionne pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    release=${$(uname -r):13:1}

    pourquoi ?

  2. #2
    Membre à l'essai
    Inscrit en
    Juillet 2007
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 34
    Points : 21
    Points
    21
    Par défaut
    Je pense qu'il faut que tu mettes des backquotes ` pour que ca marche...J'ai pas essayer, mais je pense que c'est ca...

    exemple avec la date:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    DATE="'$(`date +%T`)'"
    echo $DATE
    En fait, ton ${ fait deja une evaluation de l'interieur, et quand il essaye d'evaluer $( etc...ca marchera pas car il execute pas la commande, mais chercher ptetre la valeur de ce qu'il y a entre parenthese...
    Je suis pas expert, maisje pense que c'est du à ca.

    ++

  3. #3
    Membre chevronné
    Avatar de Anthony.Desvernois
    Homme Profil pro
    Ingénieur sécurité & risque
    Inscrit en
    Juin 2007
    Messages
    1 489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur sécurité & risque
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 489
    Points : 2 244
    Points
    2 244
    Par défaut
    Cela devrait marcher :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    release="`uname -r`:13:1"

  4. #4
    Membre éclairé Avatar de BlaireauOne
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    492
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2007
    Messages : 492
    Points : 652
    Points
    652
    Par défaut
    Citation Envoyé par sliderman
    .../...
    sinon la ligne ou je combine les deux commandes ne fonctionne pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    release=${$(uname -r):13:1}
    pourquoi ?
    Sans en être sûr, je pense que le shell attend un nom de variable à substituer
    ${nom_de_variable:position:longueur}

    En plus compact, autre possibilité

    release=$(uname -r | cut -c13)

  5. #5
    Membre confirmé
    Homme Profil pro
    Technophile Web
    Inscrit en
    Mai 2007
    Messages
    930
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Technophile Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 930
    Points : 467
    Points
    467
    Par défaut
    merci pour ces réponses

  6. #6
    Membre confirmé
    Homme Profil pro
    Technophile Web
    Inscrit en
    Mai 2007
    Messages
    930
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Technophile Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 930
    Points : 467
    Points
    467
    Par défaut
    Citation Envoyé par BlaireauOne
    release=$(uname -r | cut -c13)
    merci elle marche
    Citation Envoyé par Anthony.Desvernois
    Cela devrait marcher :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    release="`uname -r`:13:1"
    ça ça me donne la version du kernel plus la chaine :13:1

  7. #7
    Membre confirmé
    Homme Profil pro
    Technophile Web
    Inscrit en
    Mai 2007
    Messages
    930
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Technophile Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 930
    Points : 467
    Points
    467
    Par défaut
    Citation Envoyé par magicwill
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    DATE="'$(`date +%T`)'"
    echo $DATE
    j'ai lu (dans un bouquin récent) que les blackquotes sont dépassés

    et de toute façon ça ne marche pas

Discussions similaires

  1. Question sur l'ajout de variable
    Par insane1 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 08/09/2009, 14h42
  2. Réponses: 11
    Dernier message: 14/05/2009, 20h30
  3. Une question sur le stockage des variables
    Par UnReveDeCryptomeria dans le forum C
    Réponses: 10
    Dernier message: 08/06/2006, 23h37
  4. Réponses: 4
    Dernier message: 04/06/2006, 16h53
  5. [PEAR] Objet : Question sur le passage de variable
    Par Norabfr dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 07/01/2006, 01h07

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