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 08/08/2006, 16h51   #1
Rédacteur
 
Homme
Geek entrepreneur
Inscription : novembre 2004
Messages : 1 035
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Geek entrepreneur

Informations forums :
Inscription : novembre 2004
Messages : 1 035
Points : 1 813
Points : 1 813
Par défaut Comportement étrange ksh sur linux

Je n'arrive pas à comprendre un comportement en ksh. Voici le code suivant :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 
# définition de i a 0
typeset -i i=0
while [[ $i -ne 2 ]]
do 
    echo $i
    # modification de i
    i=$i+1
done
 
# en dehors de la boucle, i a été modifié et la valeur est bien 2
echo $i
 
touch toto.txt
echo "99" > toto.txt
 
# ici par contre, je modifie i
cat toto.txt |while read PROCPID
do
   # ici par contre, je modifie i
    i=4
done
 
echo $i
 
# m'affiche toujours 2....
Pourquoi la valeur que je modifie dans la seconde boucle est illisible en dehors alors que la première l'est ?
hugo123 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2006, 16h59   #2
Modérateur
 
Avatar de al1_24
 
Homme Alain
Ingénieur d'études décisionnel
Inscription : mai 2002
Messages : 4 446
Détails du profil
Informations personnelles :
Nom : Homme Alain
Âge : 51
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études décisionnel
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 4 446
Points : 7 546
Points : 7 546
Etonnant en effet...
J'ai testé ton script avec ksh93, il se comporte normalement.

Quelle version de ksh utilises-tu ?
__________________
Modérateur Langage SQL
Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
N'oubliez pas le bouton et pensez aux balises [code]
Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
al1_24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2006, 17h36   #3
Rédacteur
 
Homme
Geek entrepreneur
Inscription : novembre 2004
Messages : 1 035
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Geek entrepreneur

Informations forums :
Inscription : novembre 2004
Messages : 1 035
Points : 1 813
Points : 1 813
En fait je viens de tester sur Linux, AIX et Sun, j'ai toujours la même chose.

Par contre je ne connais pas ma version de ksh, quelle est la commande pour le savoir ?
hugo123 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2006, 18h06   #4
Modérateur
 
Avatar de al1_24
 
Homme Alain
Ingénieur d'études décisionnel
Inscription : mai 2002
Messages : 4 446
Détails du profil
Informations personnelles :
Nom : Homme Alain
Âge : 51
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études décisionnel
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 4 446
Points : 7 546
Points : 7 546
Citation:
Envoyé par hugo123
En fait je viens de tester sur Linux, AIX et Sun, j'ai toujours la même chose.
Par contre je ne connais pas ma version de ksh, quelle est la commande pour le savoir ?
Citation:
Check the version.
  1. Type echo ${.sh.version}. If that prints a version, you're all set; skip the rest of these instructions. Otherwise, continue to step 2.
  2. You don't have the 1993 version of the Korn shell. To find out what version you do have, type the command set -o emacs, then press CTRL-V. This will tell you if you have the 1988 version or the Public Domain Korn shell. In either case, continue to step 3.
  3. Type the command /usr/dt/bin/dtksh. If this gives you a $ prompt, you have the Desktop Korn Shell, which is based on an early version of ksh93.
__________________
Modérateur Langage SQL
Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
N'oubliez pas le bouton et pensez aux balises [code]
Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
al1_24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2006, 09h02   #5
Rédacteur
 
Homme
Geek entrepreneur
Inscription : novembre 2004
Messages : 1 035
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Geek entrepreneur

Informations forums :
Inscription : novembre 2004
Messages : 1 035
Points : 1 813
Points : 1 813
Voici la version :
PD KSH v5.2.14 99/07/13.2
hugo123 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2006, 10h42   #6
Modérateur
 
Avatar de al1_24
 
Homme Alain
Ingénieur d'études décisionnel
Inscription : mai 2002
Messages : 4 446
Détails du profil
Informations personnelles :
Nom : Homme Alain
Âge : 51
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études décisionnel
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 4 446
Points : 7 546
Points : 7 546
pdksh n'est pas totalement compatible avec ksh.
En particulier, la dernière commande d'un pipeline n'est pas exécutée dans le shell parent...d'où ton problème.
Essaye comme ça :
Code :
1
2
3
4
while read PROCPID
do
    i=4
done < toto.txt
Tu peux trouver toutes les ressources pour monter le vrai Korn shell à cette adresse là.
__________________
Modérateur Langage SQL
Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
N'oubliez pas le bouton et pensez aux balises [code]
Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
al1_24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2006, 10h55   #7
Rédacteur
 
Homme
Geek entrepreneur
Inscription : novembre 2004
Messages : 1 035
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Geek entrepreneur

Informations forums :
Inscription : novembre 2004
Messages : 1 035
Points : 1 813
Points : 1 813
Les installs je peux pas trop y toucher, j'ai plusieurs machines avec une install bien défini.
Je me suis arrangé differemment en supposant que mes fichiers n'avaient pas plusieurs lignes (donc pas de while a faire, un VALEUR=`cat fichier` a suffi)
Merci en tout cas pour la réponse, je trouvais cela assez étrange.
hugo123 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h25.


 
 
 
 
Partenaires

Hébergement Web