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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    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
    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 averti
    Inscrit en
    Juillet 2007
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 34
    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 Expert
    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
    Par défaut
    Cela devrait marcher :

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

  4. #4
    Membre éprouvé
    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
    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

  5. #5
    Membre émérite 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
    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)

  6. #6
    Membre éprouvé
    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
    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 éprouvé
    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
    Par défaut
    merci pour ces réponses

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