PHWinfo banniere

Titres
PORTAIL ANNUAIRE ARTICLES COMPARATEUR HÉBERGEURS DEVIS FORUMS RÉDUCTEUR D'URL
Précédent   PHWinfo > Forums Hébergement > Forum Serveur - Sécurité et techniques > fr.comp.os.unix > Re: (ba|pdk|z)sh & persistance des variables
S'inscrire FAQ Membres Recherche Messages du jour Marquer les forums comme lus
fr.comp.os.unix Système UNIX.

Re: (ba|pdk|z)sh & persistance des variables

Réponse
 
LinkBack Outils de la discussion
Vieux 22/02/2006, 22h06   #1
Marc Dilasser
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: (ba|pdk|z)sh & persistance des variables

Bonsoir

Pascal Cabaud a écrit :
> Bonsoir,
>
> avec (pd)ksh (/bin/ksh de NetBSD), j'ai ca :
> i=0
> cat file | while read line
> do
> i=$(expr $i + 1)
> done
> echo "$i"
> et j'obtiens... 0 !
>
> Avec le ksh de Solaris 9 (ksh88 si je ne m'abuse), j'ai bien le nombre
> de lignes dans file. La ou je commence a (encore) moins comprendre,
> c'est que bash me fait pareil... tandis que zsh donne le resultat que
> j'attends.
>
> A cote de cela, le code suivant est evidemment ok avec bash, (pd)ksh et
> zsh :
> i=0
> while (( $i < 10 ))
> do
> i=$(expr $i + 1)
> done
> echo $i
>
> Ou est-ce que je peche ?
>


> Bonsoir,
>
> avec (pd)ksh (/bin/ksh de NetBSD), j'ai ca :
> i=0
> cat file | while read line
> do
> i=$(expr $i + 1)
> done
> echo "$i"
> et j'obtiens... 0 !
>
> Avec le ksh de Solaris 9 (ksh88 si je ne m'abuse), j'ai bien le nombre
> de lignes dans file. La ou je commence a (encore) moins comprendre,
> c'est que bash me fait pareil... tandis que zsh donne le resultat que
> j'attends.
>
> A cote de cela, le code suivant est evidemment ok avec bash, (pd)ksh et
> zsh :
> i=0
> while (( $i < 10 ))
> do
> i=$(expr $i + 1)
> done
> echo $i
>
> Ou est-ce que je peche ?
>

Dans le man du bash au paragraphe Pipelines:

Pipelines
A pipeline is a sequence of one or more commands separated
by the character |. The format for a pipeline is:

[time [-p]] [ ! ] command [ | command2 ... ]

GNU Bash-3.0 2004 June 26 5

BASH(1) BASH(1)

The standard output of command is connected via a pipe to
the standard input of command2. This connection is per-
formed before any redirections specified by the command
(see REDIRECTION below).

....
Each command in a pipeline is executed as a separate pro-
cess (i.e., in a subshell).

Ca ressemble à ça, non ?


Marc
  Réponse avec citation
Vieux 23/02/2006, 07h20   #2
Jean-Louis Liagre
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: (ba|pdk|z)sh & persistance des variables

Marc Dilasser wrote:
> Bonsoir
>
> Pascal Cabaud a écrit :
>> Bonsoir,
>>
>> avec (pd)ksh (/bin/ksh de NetBSD), j'ai ca :
>> i=0
>> cat file | while read line
>> do
>> i=$(expr $i + 1)
>> done
>> echo "$i"
>> et j'obtiens... 0 !
>>
>> Avec le ksh de Solaris 9 (ksh88 si je ne m'abuse), j'ai bien le nombre
>> de lignes dans file. La ou je commence a (encore) moins comprendre,
>> c'est que bash me fait pareil... tandis que zsh donne le resultat que
>> j'attends.
>>
>> A cote de cela, le code suivant est evidemment ok avec bash, (pd)ksh
>> et zsh :
>> i=0
>> while (( $i < 10 ))
>> do
>> i=$(expr $i + 1)
>> done
>> echo $i
>>
>> Ou est-ce que je peche ?
>>

>
>> Bonsoir,
>>
>> avec (pd)ksh (/bin/ksh de NetBSD), j'ai ca :
>> i=0
>> cat file | while read line
>> do
>> i=$(expr $i + 1)
>> done
>> echo "$i"
>> et j'obtiens... 0 !
>>
>> Avec le ksh de Solaris 9 (ksh88 si je ne m'abuse), j'ai bien le nombre
>> de lignes dans file. La ou je commence a (encore) moins comprendre,
>> c'est que bash me fait pareil... tandis que zsh donne le resultat que
>> j'attends.
>>
>> A cote de cela, le code suivant est evidemment ok avec bash, (pd)ksh
>> et zsh :
>> i=0
>> while (( $i < 10 ))
>> do
>> i=$(expr $i + 1)
>> done
>> echo $i
>>
>> Ou est-ce que je peche ?
>>

> Dans le man du bash au paragraphe Pipelines:
>
> Pipelines
> A pipeline is a sequence of one or more commands separated
> by the character |. The format for a pipeline is:
>
> [time [-p]] [ ! ] command [ | command2 ... ]
>
> GNU Bash-3.0 2004 June 26 5
>
> BASH(1) BASH(1)
>
> The standard output of command is connected via a pipe to
> the standard input of command2. This connection is per-
> formed before any redirections specified by the command
> (see REDIRECTION below).
>
> ....
> Each command in a pipeline is executed as a separate pro-
> cess (i.e., in a subshell).
>
> Ca ressemble à ça, non ?
>
>
> Marc


Apparement, sous ksh, l'exécution dans le shell courant de la
dernière commande n'est pas garantie ...

User Commands ksh93(1)

...

A pipeline is a sequence of one or more commands separated
by |. The standard output of each command but the last is
connected by a pipe(2) to the standard input of the next
command. Each command, except possibly the last, is run as
a separate process; the shell waits for the last command to
terminate.
  Réponse avec citation
Vieux 23/02/2006, 08h57   #3
Stephane Chazelas
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: (ba|pdk|z)sh & persistance des variables

2006-02-23, 08:20(+01), Jean-Louis Liagre:
[...]
> Apparement, sous ksh, l'exécution dans le shell courant de la
> dernière commande n'est pas garantie ...


Et POSIX ou la specification UNIX te diront aussi que ce n'est
pas garanti, qu'un shell peut faire ce qu'il veut et qu'un
script ne doit pas faire d'assumption dans un sens ou dans
l'autre.

Moi, je rajouterais que "while read" dans un script indique en
general un script mal ecrit.

>
> User Commands ksh93(1)
>
> ...
>
> A pipeline is a sequence of one or more commands separated
> by |. The standard output of each command but the last is
> connected by a pipe(2) to the standard input of the next
> command. Each command, except possibly the last, is run as
> a separate process; the shell waits for the last command to
> terminate.



--
Stéphane
  Réponse avec citation
Vieux 23/02/2006, 09h28   #4
Luc Habert
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: (ba|pdk|z)sh & persistance des variables

Stephane Chazelas :

> Moi, je rajouterais que "while read" dans un script indique en
> general un script mal ecrit.


Pouet!
  Réponse avec citation
Vieux 23/02/2006, 11h49   #5
Nicolas George
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: (ba|pdk|z)sh & persistance des variables

> 2006-02-23, 08:20(+01), Jean-Louis Liagre:
>> Apparement, sous ksh, l'exécution dans le shell courant de la
>> dernière commande n'est pas garantie ...


Je pense qu'il faut interpréter ça tout simplement pour le cas des commandes
externes: dans «foo | bar», bar est exécuté dans un sous-process quand ce
n'est pas un builtin.

Stephane Chazelas wrote in message
<slrndvqu7l.4oi.stephane.chazelas@spam.is.invalid> :
> Et POSIX ou la specification UNIX te diront aussi que ce n'est
> pas garanti


Non: ni POSIX ni Single Unix ne disent quoi que ce soit sur ksh.
Heureusement d'ailleurs.
  Réponse avec citation
Vieux 23/02/2006, 12h17   #6
Stephane Chazelas
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: (ba|pdk|z)sh & persistance des variables

On Thu, 23 Feb 2006 11:49:33 +0000 (UTC), Nicolas George wrote:
>> 2006-02-23, 08:20(+01), Jean-Louis Liagre:
>>> Apparement, sous ksh, l'exécution dans le shell courant de la
>>> dernière commande n'est pas garantie ...

>
> Je pense qu'il faut interpréter ça tout simplement pour le cas des commandes
> externes: dans «foo | bar», bar est exécuté dans un sous-process quand ce
> n'est pas un builtin.


On peut s'attendre a tout avec ksh. Ca peut tres bien dependre
de plein de facteurs. Par exemple, si on a affaire a une
fonction, il peut peut-etre y avoir des cas ou elle sera
executee dans un sous-shell, la page de man ne se mouille pas.

> Stephane Chazelas wrote in message
> <slrndvqu7l.4oi.stephane.chazelas@spam.is.invalid> :
>> Et POSIX ou la specification UNIX te diront aussi que ce n'est
>> pas garanti

>
> Non: ni POSIX ni Single Unix ne disent quoi que ce soit sur ksh.
> Heureusement d'ailleurs.


Bien sur, je parlais des shells POSIX et des scripts POSIX, ca
va de soi.

--
Stephane
  Réponse avec citation
Vieux 23/02/2006, 12h23   #7
Nicolas George
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: (ba|pdk|z)sh & persistance des variables

Stephane Chazelas wrote in message
<slrndvr9uf.218.stephane_chazelas@duey.spider.com> :
> Bien sur, je parlais des shells POSIX et des scripts POSIX, ca
> va de soi.


Non, ça ne va pas de soi, pas en réponse à un paragraphe qui parle
spécifiquement de ksh, justement. En réponse à un paragraphe qui parle de
ksh, on parle implicitement de ksh, c'est ça qui va de soi.
  Réponse avec citation
Vieux 23/02/2006, 21h21   #8
Jean-Louis Liagre
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: (ba|pdk|z)sh & persistance des variables

Nicolas George wrote:
>> 2006-02-23, 08:20(+01), Jean-Louis Liagre:
>>> Apparement, sous ksh, l'exécution dans le shell courant de la
>>> dernière commande n'est pas garantie ...

>
> Je pense qu'il faut interpréter ça tout simplement pour le cas des commandes
> externes : dans « foo | bar », bar est exécuté dans un sous-process quand ce
> n'est pas un builtin.


Ca se tient, ça m'étonnait aussi ce "possibly".
  Réponse avec citation
Réponse


Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are oui


Fuseau horaire GMT +1. Il est actuellement 05h34.


Édité par : vBulletin® version 3.7.3
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0 RC5 Tous droits réservés.
Version française #16 par l'association vBulletin francophone
PHWinfo est un site Éducation Sans Frontières ©2000-2008
Ad Management by RedTyger
©Tous droits réservés par les parties respectives
Page generated in 0,13740 seconds with 16 queries