Bonjour,
Comment rendre une variable présente dans une FONCTION visible en dehors de celle-ci ?
Notamment dans une structure de contrôle CASE.
J'espère avoir été clair dans mon explication.
Merci d'avance
Bonjour,
Comment rendre une variable présente dans une FONCTION visible en dehors de celle-ci ?
Notamment dans une structure de contrôle CASE.
J'espère avoir été clair dans mon explication.
Merci d'avance
Bonjour
Ce qui est déstabilisant avec bash, c'est que les variables ne sont pas locales à la fonction par défaut. Il faut utiliser le mot "local" en plus pour qu'elle deviennent locales.
Donc les variables dans une fonction sont déjà globales!
La question est donc "Qu'est-ce qui te fait penser que la variable n'est pas globale ?"
Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.
Car elle n'est pas reconnue ci-après avec ou sans accolade
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 case $# in 0) echo -e "# Alimenter les variables ci-dessous \n# contexte instance heure_debut heure_fin type_log date " >${contexte}/diff/tmp/log/list_file
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 function F1 { # Declaration des variables contexte=$(echo $1 |tr [:lower:] [:upper:]) instance=$(echo $2 |tr [:lower:] [:upper:]) date_du_jour=$(echo $(date '+%Y/%m/%d') | sed 's/\//-/g') # Date du jour au format AAAA-MM-JJ
$# désigne le nombre d'arguments ? Si c'est 0, alors tu indiques les arguments qui doivent être présents ? Et tu les renvoies dans un fichier au chemin variable ?
Sauf que le chemin dépend du premier argument, et le premier argument est vide puisque il y en a 0. Donc le "contexte" n'est pas un mot en majuscule.
Ai-je bien compris ?
Sinon, je soutiens la demande d'informations complémentaires de N_BaH.
Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.
Effectivement quand on lance le script sans argument, il créé un fichier list_file, ça marche lorsque je ne mets pas de chemin spécifique (voir ci-dessous)
ça ne marche pas avec ce chemin ${contexte}/diff/tmp/log/list_file
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 case $# in 0) echo -e "# Alimenter les variables ci-dessous \n# contexte instance heure_debut heure_fin type_log date " >list_file
Hum. Pas sûr qu'on se soit compris. $1 est le premier paramètre de la fonction, pas du script.
Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.
Bonjour,
C'est beau :
Je crois que je vais faire pareil maintenant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part date_du_jour=$(echo $(date '+%Y/%m/%d') | sed 's/\//-/g') # Date du jour au format AAAA-MM-JJ
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 #mettre 25 dans la variable toto toto=$(echo "25") #non, en fait je vais mettre 2 dans la variable toto toto=$(echo "25" | sed 's/25/2/g')
PS: au moins un petit man date ne serait pas superflu
Cordialement.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager