Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 06/09/2011, 17h58   #1
Membre confirmé
 
Inscription : janvier 2007
Messages : 767
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 767
Points : 224
Points : 224
Par défaut bourne shell ajout d'argument depuis le shell à ceux reçus en entrée

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
pcouas est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 06/09/2011, 18h09   #2
Responsable Modération
 
Avatar de ok.Idriss
 
Homme Idriss Neumann
Consultant en SSII et étudiant au CNAM Paris (ingénieur SI)
Inscription : février 2009
Messages : 1 988
Détails du profil
Informations personnelles :
Nom : Homme Idriss Neumann
Âge : 21
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Consultant en SSII et étudiant au CNAM Paris (ingénieur SI)

Informations forums :
Inscription : février 2009
Messages : 1 988
Points : 6 142
Points : 6 142
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
ok.Idriss est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 06/09/2011, 18h14   #3
Expert Confirmé Sénior
 
Avatar de N_BaH
 
Inscription : février 2008
Messages : 2 071
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 2 071
Points : 4 154
Points : 4 154
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
...
?
N_BaH est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 06/09/2011, 20h35   #4
Membre confirmé
 
Inscription : janvier 2007
Messages : 767
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 767
Points : 224
Points : 224
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
pcouas est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 06/09/2011, 20h58   #5
Expert Confirmé Sénior
 
Avatar de N_BaH
 
Inscription : février 2008
Messages : 2 071
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 2 071
Points : 4 154
Points : 4 154
pour ça on utilise set :
Code :
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
je le montre à l'aide d'une fonction, le résultat serait le même avec un script.
N_BaH est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 07/09/2011, 06h46   #6
Membre confirmé
 
Inscription : janvier 2007
Messages : 767
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 767
Points : 224
Points : 224
Merci pour la réponse
Mais set -- peux il influer directement sur $*
mon sh fait
Code :
1
2
3
4
5
6
7
$1
....
....
shift
$1
.....
.....
et c'est ce $1 que je souhaite modifier ?

Merci d'avance
Philippe
pcouas est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 07/09/2011, 08h08   #7
Membre actif
 
Homme
Inscription : août 2011
Messages : 44
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : août 2011
Messages : 44
Points : 153
Points : 153
Bonjour,

Si tu veux ajouter des valeurs aux paramètres positionnels :
Code :
set -- "newVal1" "newVal2" "${@}" "newVali"
exemple :
Code :
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
edit : ne pas utiliser $* mais $@
pour cause :
Code :
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
chardclo est déconnecté   Envoyer un message privé Réponse avec citation 20
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h05.


 
 
 
 
Partenaires

Hébergement Web