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
Version imprimable
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 :coucou:
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! :ccool:
La question est donc "Qu'est-ce qui te fait penser que la variable n'est pas globale ?"
Bonjour,
avec tout le script, ou juste la partie où cette variable est déclarée/assignée, ce serait plus évident, que de montrer là où elle est utilisée/invisible !
Code:
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.
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_fileCode:
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. :oops:
et la fonction ? tu l'appelles où, et comment ?
Bonjour,
C'est beau :ptdr: :
Je crois que je vais faire pareil maintenant:Code:date_du_jour=$(echo $(date '+%Y/%m/%d') | sed 's/\//-/g') # Date du jour au format AAAA-MM-JJ
:dehors:Code:
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