Bonjour
J'ai des shells en Bourne qui fonctionnent avec une boucle while et des shift
je dois rajouter des arguments venant d'un fichier, Puis je modifier dynamiquement la liste des arguments reçus en entrée ?
Merci d'avance
Philippe
Bonjour
J'ai des shells en Bourne qui fonctionnent avec une boucle while et des shift
je dois rajouter des arguments venant d'un fichier, Puis je modifier dynamiquement la liste des arguments reçus en entrée ?
Merci d'avance
Philippe
Bonjour.
Qu'entends-tu par "modifier dynamiquement" ? Faudrait donner plus de précisions sur ce que tu veux faire, un exemple ne serait pas de trop.
Cordialement,
Idriss
Bonjour,
je ne suis pas sûr de bien comprendre...mais je dirais non.
Il n'est pas possible de passer de nouveaux arguments à un script en train de s'exécuter;
à moins de l'avoir prévu, et d'ouvrir "un canal de communication" en utilisant la commande interne read
...
?
Bonsoir,
Les arguments sont dans $*, puis je a l'interieur de mon shell bourne rajouter des arguments a ce tableau.
Mon script est base sur des shifts, et en fait c'est l'un des arguments actuels recu et dont je ne maitrise pas le format que je souhaite decompose, et rajouter au tableau contenu dans $*
Merci d'avance
Philippe
pour ça on utilise set :je le montre à l'aide d'une fonction, le résultat serait le même avec un script.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 $ maFonc() { var1=$1; var2="$2"; var3=$3; set -- $var2; echo "$var1 $* $var3";} $ maFonc foo "-les paramètres positionnels sont écrasés-" bar foo -les paramètres positionnels sont écrasés- bar
Merci pour la réponse
Mais set -- peux il influer directement sur $*
mon sh fait
et c'est ce $1 que je souhaite modifier ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 $1 .... .... shift $1 ..... .....
Merci d'avance
Philippe
Bonjour,
Si tu veux ajouter des valeurs aux paramètres positionnels :
exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part set -- "newVal1" "newVal2" "${@}" "newVali"
edit : ne pas utiliser $* mais $@
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 $ls -l /bin/sh -r-xr-xr-x 5 bin bin 288912 Jan 16 2009 /bin/sh $ cat test.sh #!/bin/sh echo "${@}" [ $# -gt 4 ] && exit set -- "newVal1" "${@}" "newVal2" exec $0 "$@" $./test.sh newVal1 newVal2 newVal1 newVal1 newVal2 newVal2 newVal1 newVal1 newVal1 newVal2 newVal2 newVal2 $./test.sh 1 1 newVal1 1 newVal2 newVal1 newVal1 1 newVal2 newVal2
pour cause :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 $ cat test.sh #!/bin/sh printf '%s\n' $* echo "---" printf '%s\n' $@ echo "---" printf '%s\n' "$*" echo "---" printf '%s\n' "$@" ./test.sh 1 "2nd p" 1 2nd p --- 1 2nd p --- 1 2nd p --- 1 2nd p
Partager