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.
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.

Poser une question


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.
Pas sur de ce que tu veux dire.
La syntaxe standard (si on oublie les ksheries):
f() {
arg1=$1 arg2=$2 nargs=$#
}
f() {
x=$1
REPLY=$(($x + 1))
}
f 12
y=$REPLY
ou:
f() {
x=$1
printf %s "$(($x + 1))"
}
y=$(f 12)
[...]
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
C'est pas moi qui décide ;-)
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.