Fonctione en bash

Aurélie -  
asevere Messages postés 13521 Statut Webmaster -
Bonjour a tous!
Voilà, je suis sur mac et je veux faire un script bash. Dans ce script je veux faire une fonction. Je voulais tout simplement savoir si il était possible que cette fonction soit appelée plusieurs fois en même temps sans que les exécutions se chevauchent?
Je sais pas si vous voyez ce que je veux dire...
Merci à ceux qui répondrons!

4 réponses

moi
 
Salut !

Qu'est ce que tu entends par ce "chevauchent"?

++
0
jipicy Messages postés 41342 Statut Modérateur 4 896
 
Salut,

Je sais pas si vous voyez ce que je veux dire...
Ben pas trop là !
De toute façon, je ne pense pas que tu puisses l'appeler plusieurs fois en même temps (à moins que tu veuilles dire "l'appeler à l'intérieur même d'elle même", heu... je suis pas sûr d'être très explicite sur ce coup là), mais plusieurs fois dans le script, oui.
0
[Dal] Messages postés 6373 Statut Contributeur 1 106
 
Salut Aurélie,

Si ce que tu veux dire c'est : est-ce que je peux lancer simultanément plusieurs instances d'un même script bash (comportant donc la même fonction), la réponse est oui en principe.

Chaque lancement donnera lieu à la création d'un processus différent et se verra octroyer un espace mémoire différent pour les variables du script.

Cependant... tout dépend de ce que fait ton script (et ta fonction) et de la façon dont il intervient sur le système. Il n'y a que toi qui peut savoir si le lancement simultané est possible sans problèmes compte tenu des opérations effectuées sur le système.


Dal
0
asevere Messages postés 13521 Statut Webmaster 426
 
Je l'ai compris différament moi :)
#!/bin/bash

function f
{
for i in 1 2 3; do
sleep 2
echo $i
done;
}

J'imagine ce script, dans lequel on appelerai plusieur fois la fonction f
f;
f;


$ ./script.sh
1 (2")
2 (4")
3 (6")
1 (8")
2 (10")
3 (12")
$
durée 12 secondes.
Les de appel s'effectuent l'un aprés l'autre.
f &
sleep 3
f;
$./script.sh
1 (2")
2 (4")
1 (5")
3 (6")
2 (7")
3 (9")
$

Durée 9 secondes, les chiffres indique bien que rien n'est altéré, les donnée utilisées dans chaque appel sont bien disociée :)

Il faut juste penser à l'operateur "&" :)

++
0