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 :

[sed] Utiliser une variable shell


Sujet :

Shell et commandes GNU

  1. #21
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 832
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 832
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par flash026 Voir le message
    je ne peux pas appeler une fonction dans une fonction.
    Citation Envoyé par Flodelarab Voir le message
    On peut toujours appeler une fonction dans une fonction.
    Et on peut même avoir une fonction qui s'appelle elle-même.

    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #!/bin/bash
     
    fact() {
    	(
    		if test $1 -lt 2; then
    			echo 1
    			return 0
    		fi
     
    		expr $1 \* $(fact $(expr $1 - 1))
    	)
    }
     
    fact 10

    PS: les parenthèses permettent de créer un "contexte de travail" séparé (toute variable créée dans ce contexte dédié ne viendra pas interférer avec une variable déjà existante)
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  2. #22
    Invité
    Invité(e)
    Par défaut
    D'acc je ne savais pas que c'était possible.
    Mais autant en java on fait des return dans les fonctions mais là si je fais une fonction format avec un paramètre comment je fais pour que cette fonction "return" une valeur qui sera utilisé par l'autre fonction?

    Un pas vers gare écho suffit ?
    Dernière modification par Invité ; 09/08/2021 à 07h48.

  3. #23
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 832
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 832
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par flash026 Voir le message
    Mais autant en java on fait des return dans les fonctions mais là si je fais une fonction format avec un paramètre comment je fais pour que cette fonction "return" une valeur qui sera utilisé par l'autre fonction?
    Ah oui c'est en effet la particularité du shell que le return dans une fonction ne retourne pas une valeur "de travail" mais un "code de bon fonctionnement", code pour lequel 0 signifie "ok" et toute autre valeur (comprise entre 1 et 255) ignifie "souci".
    Ainsi dans cet exemple
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    fct() {
    	test $1 -lt 10 && return 0 || return 1
    }

    La fonction pourra être utilisée de cette façon: if fct $a; then ...; else ...; fi exactement comme l'instruction test (on considère que "$a" contient ici un nombre entier).

    Pour qu'une fonction "xxx()" retourne une valeur "de travail", il faut juste qu'elle affiche cette valeur. Et l'appelant pourra alors récupérer cet "affichage" par le biais de l'instruction habituelle $(xxx) ou (ancienne syntaxe) `xxx`.

    Exemple
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    carre() {
    	expr $1 \* $1
    }
     
    a=$(carre 5)
    echo "a=$a"
    b=`carre 6`
    echo "b=$b"

    C'est d'ailleurs ainsi que j'ai codé la factorielle de mon exemple précédent qui renvoie ses résultats soit via echo, soit via expr, toutes deux des instructions affichant leur travail à l'écran.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  4. #24
    Invité
    Invité(e)
    Par défaut
    Bonjour à tous,
    Je vous remercie tous pour votre participation et l'aide que vous m'avez apportée.
    J'ai appris plusieurs choses grâce à vous
    Bonne fin d'après midi

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Utiliser une variable avec sed
    Par Eto Demerzel dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 11/04/2015, 20h33
  2. Réponses: 21
    Dernier message: 21/08/2008, 23h30
  3. Utilisation de sed avec une variable
    Par Neuromancien2 dans le forum Linux
    Réponses: 5
    Dernier message: 18/07/2008, 17h53
  4. Utiliser une variable d'un script shell
    Par GomuSan dans le forum C
    Réponses: 14
    Dernier message: 10/01/2008, 10h49
  5. [XSL] utiliser une variable pour nom d'élément
    Par luta dans le forum XSL/XSLT/XPATH
    Réponses: 13
    Dernier message: 07/09/2004, 13h58

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