fonction en ksh

Le
mulan
Bonjour,

J'ai beau faire du shell unix depuis un paquet d'années, j'ai encore un peu
de mal avec les fonctions. Il n'est pas si évident que ça de trouver de
l'info en français sur le net, et en anglais je sature vite.

Donc exercice simple, qui pourrait me donner un exemple d'une fonction avec
arguments déclarés explicitement, parce que cela semblait possible sur un
site où je l'ai vu, malheureusement ce n'était que mentionné sans exemples.

Ensuite, comment utiliser une fonction pour ramener une valeur au lieu d'un
status exploitable via $?. Autrement dit, comment coder y = f(x).

Et enfin comment on peut passer une variable en paramètre, i.e je veux
affecter la valeur de $trucmuche à l'intérieur de la fonction à qui je l'ai
passé en argument pour exploiter ensuite $trucmuche en dehors. J'avais déjà
fait, a priori il faut utiliser $$trucmuche mais souvenir lointain

Merci pour votre aide.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Stephane CHAZELAS
Le #22940191
2010-12-18, 19:27(+01), mulan:
Bonjour,

J'ai beau faire du shell unix depuis un paquet d'années, j'ai encore un peu
de mal avec les fonctions. Il n'est pas si évident que ça de trouver de
l'info en français sur le net, et en anglais je sature vite.



Si tu as besoin de fonctions, il y a des chances que tu aies
besoin d'un vrai language de programmation, pas d'un shell.

Donc exercice simple, qui pourrait me donner un exemple d'une fonction avec
arguments déclarés explicitement, parce que cela semblait possible sur un
site où je l'ai vu, malheureusement ce n'était que mentionné sans exemples.



Pas sur de ce que tu veux dire.

La syntaxe standard (si on oublie les ksheries):

f() {
arg1=$1 arg2=$2 nargs=$#
}

Ensuite, comment utiliser une fonction pour ramener une valeur au lieu d'un
status exploitable via $?. Autrement dit, comment coder y = f(x).



f() {
x=$1
REPLY=$(($x + 1))
}

f 12
y=$REPLY

ou:

f() {
x=$1
printf %s "$(($x + 1))"
}
y=$(f 12)

Et enfin comment on peut passer une variable en paramètre, i.e je veux
affecter la valeur de $trucmuche à l'intérieur de la fonction à qui je l'ai
passé en argument pour exploiter ensuite $trucmuche en dehors. J'avais déjà
fait, a priori il faut utiliser $$trucmuche mais souvenir lointain...


[...]

f() {
varname=$1
eval "$varname=$RANDOM"
}
f trucmuche

g() {
varname=$1
eval "printf '%sn' "${$varname}""
}
g trucmuche


Tout ceci est syntaxe standard, donc pas seulement ksh.

--
Stephane
mulan
Le #22941091
"Stephane CHAZELAS" news:
2010-12-18, 19:27(+01), mulan:
Bonjour,

J'ai beau faire du shell unix depuis un paquet d'années, j'ai encore un
peu
de mal avec les fonctions. Il n'est pas si évident que ça de trouver de
l'info en français sur le net, et en anglais je sature vite.



Si tu as besoin de fonctions, il y a des chances que tu aies
besoin d'un vrai language de programmation, pas d'un shell.



C'est pas moi qui décide ;-)


Donc exercice simple, qui pourrait me donner un exemple d'une fonction
avec
arguments déclarés explicitement, parce que cela semblait possible sur un
site où je l'ai vu, malheureusement ce n'était que mentionné sans
exemples.



Pas sur de ce que tu veux dire.



Moi non plus. En fait je pense que l'auteur parlait des déclarations en
local mais c'était assez ambigu. Donc question annulée.

Merci pour toutes les autres réponses, j'ai tout ce qu'il me faut.
Publicité
Poster une réponse
Anonyme