Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

fonction en ksh

2 réponses
Avatar
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.

2 réponses

Avatar
Stephane CHAZELAS
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
Avatar
mulan
"Stephane CHAZELAS" a écrit dans le message de
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.