Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Cyrille Lefevre
Thomas a écrit :
bonjour :-)
bash
apparemment je sais pas faire les if
j'essaye comme ça : if [["$1"=='b']]; then
qu'est ce qui ne va pas ?
Bonjour,
les espaces :
if [[ $1 == b ]]; then ^ ^ ^ ^
les variables n'ont pas besoin d'être protégées lorsqu'elles sont e ntre double [[, par contre, il est très fortement conseillé de les proté gées lorsqu'elles sont entre simple [. idem pour les affectations (x=$y) mais pas pour les passages d'argument s (foo "$bar").
Regards, Cordialement,
Cyrille Lefevre. -- mailto:Cyrille.Lefevre-news% supprimer "%nospam% et ".invalid" pour me repondre. remove "%nospam" and ".invalid" to answer me.
Thomas a écrit :
bonjour :-)
bash
apparemment je sais pas faire les if
j'essaye comme ça :
if [["$1"=='b']]; then
qu'est ce qui ne va pas ?
Bonjour,
les espaces :
if [[ $1 == b ]]; then
^ ^ ^ ^
les variables n'ont pas besoin d'être protégées lorsqu'elles sont e ntre
double [[, par contre, il est très fortement conseillé de les proté gées
lorsqu'elles sont entre simple [.
idem pour les affectations (x=$y) mais pas pour les passages d'argument s
(foo "$bar").
Regards, Cordialement,
Cyrille Lefevre.
--
mailto:Cyrille.Lefevre-news%nospam@laposte.net.invalid
supprimer "%nospam% et ".invalid" pour me repondre.
remove "%nospam" and ".invalid" to answer me.
les variables n'ont pas besoin d'être protégées lorsqu'elles sont e ntre double [[, par contre, il est très fortement conseillé de les proté gées lorsqu'elles sont entre simple [. idem pour les affectations (x=$y) mais pas pour les passages d'argument s (foo "$bar").
Regards, Cordialement,
Cyrille Lefevre. -- mailto:Cyrille.Lefevre-news% supprimer "%nospam% et ".invalid" pour me repondre. remove "%nospam" and ".invalid" to answer me.
Thomas
In article , Cyrille Lefevre <cyrille.lefevre-news% wrote:
Thomas a écrit : > bonjour :-) > > bash > > > apparemment je sais pas faire les if > > j'essaye comme ça : > if [["$1"=='b']]; then > > qu'est ce qui ne va pas ? >
Bonjour,
les espaces :
if [[ $1 == b ]]; then ^ ^ ^ ^
merci bcp :-)
les variables n'ont pas besoin d'être protégées lorsqu'elles sont entre double [[, par contre, il est très fortement conseillé de les protégées lorsqu'elles sont entre simple [. idem pour les affectations (x=$y) mais pas pour les passages d'arguments (foo "$bar").
je suis habitué à la programmation stricte (ada), alors je préfère prendre l'habitude de mettre des guillemets partout et les retirer quand c'est nécessaire :-)
In article <4A907DD2.4040100@laposte.net.invalid>,
Cyrille Lefevre <cyrille.lefevre-news%nospam@laposte.net.invalid>
wrote:
Thomas a écrit :
> bonjour :-)
>
> bash
>
>
> apparemment je sais pas faire les if
>
> j'essaye comme ça :
> if [["$1"=='b']]; then
>
> qu'est ce qui ne va pas ?
>
Bonjour,
les espaces :
if [[ $1 == b ]]; then
^ ^ ^ ^
merci bcp :-)
les variables n'ont pas besoin d'être protégées lorsqu'elles sont entre
double [[, par contre, il est très fortement conseillé de les protégées
lorsqu'elles sont entre simple [.
idem pour les affectations (x=$y) mais pas pour les passages d'arguments
(foo "$bar").
je suis habitué à la programmation stricte (ada),
alors je préfère prendre l'habitude de mettre des guillemets partout et
les retirer quand c'est nécessaire :-)
In article , Cyrille Lefevre <cyrille.lefevre-news% wrote:
Thomas a écrit : > bonjour :-) > > bash > > > apparemment je sais pas faire les if > > j'essaye comme ça : > if [["$1"=='b']]; then > > qu'est ce qui ne va pas ? >
Bonjour,
les espaces :
if [[ $1 == b ]]; then ^ ^ ^ ^
merci bcp :-)
les variables n'ont pas besoin d'être protégées lorsqu'elles sont entre double [[, par contre, il est très fortement conseillé de les protégées lorsqu'elles sont entre simple [. idem pour les affectations (x=$y) mais pas pour les passages d'arguments (foo "$bar").
je suis habitué à la programmation stricte (ada), alors je préfère prendre l'habitude de mettre des guillemets partout et les retirer quand c'est nécessaire :-)
In article , Cyrille Lefevre <cyrille.lefevre-news% wrote:
> Thomas a écrit : > > bonjour :-) > > > > bash > > > > > > apparemment je sais pas faire les if > > > > j'essaye comme ça : > > if [["$1"=='b']]; then > > > > qu'est ce qui ne va pas ? > > > > > Bonjour, > > les espaces : > > if [[ $1 == b ]]; then > ^ ^ ^ ^
merci bcp :-)
Les espaces, par défaut, sont des séparateurs. (les séparateurs sont définits par la variable $IFS)
Ils sont nécessaires pour que le shell puisse lire chaque éléments séparément. Sans eux il intérprète [["$1"=='b']] comme un seul "mot".
je suis habitué à la programmation stricte (ada), alors je préfère prendre l'habitude de mettre des guillemets partout et les retirer quand c'est nécessaire :-)
pas d'objection ?
pour b, il n'y aurait pas, en principe, besoins de guillemets. en mettre ne sert à rien mais ne fais pas de mal et pourrait être concidéré comme une bonne habitude.
Par contre avant d'exécuter le test, $1 est remplacé par sa valeur. si $1 a une valeur nulle, ça fais une erreur : $> [ = b ] -bash: [: =: unary operator expected
Si le contennu de $1 contient un séparateur (par défaut un espace, un tab ou un retour de chariot), ça fait aussi une erreur : $> i='le chat' $> [ $i = b ] -bash: [: too many arguments
Donc les guillemets autour de $1 sont simplement nécessaires.
-- Nicolas Michel
Thomas <fantome.forums.tDeContes@free.fr.invalid> wrote:
In article <4A907DD2.4040100@laposte.net.invalid>,
Cyrille Lefevre <cyrille.lefevre-news%nospam@laposte.net.invalid>
wrote:
> Thomas a écrit :
> > bonjour :-)
> >
> > bash
> >
> >
> > apparemment je sais pas faire les if
> >
> > j'essaye comme ça :
> > if [["$1"=='b']]; then
> >
> > qu'est ce qui ne va pas ?
> >
>
>
> Bonjour,
>
> les espaces :
>
> if [[ $1 == b ]]; then
> ^ ^ ^ ^
merci bcp :-)
Les espaces, par défaut, sont des séparateurs.
(les séparateurs sont définits par la variable $IFS)
Ils sont nécessaires pour que le shell puisse lire chaque éléments
séparément. Sans eux il intérprète [["$1"=='b']] comme un seul "mot".
je suis habitué à la programmation stricte (ada),
alors je préfère prendre l'habitude de mettre des guillemets partout et
les retirer quand c'est nécessaire :-)
pas d'objection ?
pour b, il n'y aurait pas, en principe, besoins de guillemets.
en mettre ne sert à rien mais ne fais pas de mal et pourrait être
concidéré comme une bonne habitude.
Par contre avant d'exécuter le test, $1 est remplacé par sa valeur.
si $1 a une valeur nulle, ça fais une erreur :
$> [ = b ]
-bash: [: =: unary operator expected
Si le contennu de $1 contient un séparateur (par défaut un espace, un
tab ou un retour de chariot), ça fait aussi une erreur :
$> i='le chat'
$> [ $i = b ]
-bash: [: too many arguments
Donc les guillemets autour de $1 sont simplement nécessaires.
In article , Cyrille Lefevre <cyrille.lefevre-news% wrote:
> Thomas a écrit : > > bonjour :-) > > > > bash > > > > > > apparemment je sais pas faire les if > > > > j'essaye comme ça : > > if [["$1"=='b']]; then > > > > qu'est ce qui ne va pas ? > > > > > Bonjour, > > les espaces : > > if [[ $1 == b ]]; then > ^ ^ ^ ^
merci bcp :-)
Les espaces, par défaut, sont des séparateurs. (les séparateurs sont définits par la variable $IFS)
Ils sont nécessaires pour que le shell puisse lire chaque éléments séparément. Sans eux il intérprète [["$1"=='b']] comme un seul "mot".
je suis habitué à la programmation stricte (ada), alors je préfère prendre l'habitude de mettre des guillemets partout et les retirer quand c'est nécessaire :-)
pas d'objection ?
pour b, il n'y aurait pas, en principe, besoins de guillemets. en mettre ne sert à rien mais ne fais pas de mal et pourrait être concidéré comme une bonne habitude.
Par contre avant d'exécuter le test, $1 est remplacé par sa valeur. si $1 a une valeur nulle, ça fais une erreur : $> [ = b ] -bash: [: =: unary operator expected
Si le contennu de $1 contient un séparateur (par défaut un espace, un tab ou un retour de chariot), ça fait aussi une erreur : $> i='le chat' $> [ $i = b ] -bash: [: too many arguments
Donc les guillemets autour de $1 sont simplement nécessaires.
-- Nicolas Michel
Thomas
In article <1j5cwyu.1cd2w5g186xp8N%, (Nicolas Michel) wrote:
Thomas wrote:
> In article , > Cyrille Lefevre <cyrille.lefevre-news% > wrote: > > > Thomas a écrit : > > > bonjour :-) > > > > > > bash > > > > > > > > > apparemment je sais pas faire les if > > > > > > j'essaye comme ça : > > > if [["$1"=='b']]; then > > > > > > qu'est ce qui ne va pas ? > > > > > > > > > Bonjour, > > > > les espaces : > > > > if [[ $1 == b ]]; then > > ^ ^ ^ ^ > > merci bcp :-)
Les espaces, par défaut, sont des séparateurs. (les séparateurs sont définits par la variable $IFS)
Ils sont nécessaires pour que le shell puisse lire chaque éléments séparément. Sans eux il intérprète [["$1"=='b']] comme un seul "mot".
> je suis habitué à la programmation stricte (ada), > alors je préfère prendre l'habitude de mettre des guillemets partout et > les retirer quand c'est nécessaire :-) > > pas d'objection ?
pour b, il n'y aurait pas, en principe, besoins de guillemets. en mettre ne sert à rien mais ne fais pas de mal et pourrait être concidéré comme une bonne habitude.
Par contre avant d'exécuter le test, $1 est remplacé par sa valeur. si $1 a une valeur nulle, ça fais une erreur : $> [ = b ] -bash: [: =: unary operator expected
Si le contennu de $1 contient un séparateur (par défaut un espace, un tab ou un retour de chariot), ça fait aussi une erreur : $> i='le chat' $> [ $i = b ] -bash: [: too many arguments
Donc les guillemets autour de $1 sont simplement nécessaires.
merci pour le complément d'info :-)
(j'ai pas encore saisi toutes les subtilités, mais il a précisé qu'il y a une différence entre [[ et [ )
In article <1j5cwyu.1cd2w5g186xp8N%NicolasAlex.Michel.remove@epfl.ch>,
NicolasAlex.Michel.remove@epfl.ch (Nicolas Michel) wrote:
Thomas <fantome.forums.tDeContes@free.fr.invalid> wrote:
> In article <4A907DD2.4040100@laposte.net.invalid>,
> Cyrille Lefevre <cyrille.lefevre-news%nospam@laposte.net.invalid>
> wrote:
>
> > Thomas a écrit :
> > > bonjour :-)
> > >
> > > bash
> > >
> > >
> > > apparemment je sais pas faire les if
> > >
> > > j'essaye comme ça :
> > > if [["$1"=='b']]; then
> > >
> > > qu'est ce qui ne va pas ?
> > >
> >
> >
> > Bonjour,
> >
> > les espaces :
> >
> > if [[ $1 == b ]]; then
> > ^ ^ ^ ^
>
> merci bcp :-)
Les espaces, par défaut, sont des séparateurs.
(les séparateurs sont définits par la variable $IFS)
Ils sont nécessaires pour que le shell puisse lire chaque éléments
séparément. Sans eux il intérprète [["$1"=='b']] comme un seul "mot".
> je suis habitué à la programmation stricte (ada),
> alors je préfère prendre l'habitude de mettre des guillemets partout et
> les retirer quand c'est nécessaire :-)
>
> pas d'objection ?
pour b, il n'y aurait pas, en principe, besoins de guillemets.
en mettre ne sert à rien mais ne fais pas de mal et pourrait être
concidéré comme une bonne habitude.
Par contre avant d'exécuter le test, $1 est remplacé par sa valeur.
si $1 a une valeur nulle, ça fais une erreur :
$> [ = b ]
-bash: [: =: unary operator expected
Si le contennu de $1 contient un séparateur (par défaut un espace, un
tab ou un retour de chariot), ça fait aussi une erreur :
$> i='le chat'
$> [ $i = b ]
-bash: [: too many arguments
Donc les guillemets autour de $1 sont simplement nécessaires.
merci pour le complément d'info :-)
(j'ai pas encore saisi toutes les subtilités, mais il a précisé qu'il y
a une différence entre [[ et [ )
In article <1j5cwyu.1cd2w5g186xp8N%, (Nicolas Michel) wrote:
Thomas wrote:
> In article , > Cyrille Lefevre <cyrille.lefevre-news% > wrote: > > > Thomas a écrit : > > > bonjour :-) > > > > > > bash > > > > > > > > > apparemment je sais pas faire les if > > > > > > j'essaye comme ça : > > > if [["$1"=='b']]; then > > > > > > qu'est ce qui ne va pas ? > > > > > > > > > Bonjour, > > > > les espaces : > > > > if [[ $1 == b ]]; then > > ^ ^ ^ ^ > > merci bcp :-)
Les espaces, par défaut, sont des séparateurs. (les séparateurs sont définits par la variable $IFS)
Ils sont nécessaires pour que le shell puisse lire chaque éléments séparément. Sans eux il intérprète [["$1"=='b']] comme un seul "mot".
> je suis habitué à la programmation stricte (ada), > alors je préfère prendre l'habitude de mettre des guillemets partout et > les retirer quand c'est nécessaire :-) > > pas d'objection ?
pour b, il n'y aurait pas, en principe, besoins de guillemets. en mettre ne sert à rien mais ne fais pas de mal et pourrait être concidéré comme une bonne habitude.
Par contre avant d'exécuter le test, $1 est remplacé par sa valeur. si $1 a une valeur nulle, ça fais une erreur : $> [ = b ] -bash: [: =: unary operator expected
Si le contennu de $1 contient un séparateur (par défaut un espace, un tab ou un retour de chariot), ça fait aussi une erreur : $> i='le chat' $> [ $i = b ] -bash: [: too many arguments
Donc les guillemets autour de $1 sont simplement nécessaires.
merci pour le complément d'info :-)
(j'ai pas encore saisi toutes les subtilités, mais il a précisé qu'il y a une différence entre [[ et [ )
(j'ai pas encore saisi toutes les subtilités, mais il a précisé q u'il y a une différence entre [[ et [ )
Bonjour,
assez grande d'ailleurs, [ est, historiquement, un lien sur la commande t est. par la suite, test a été intégré aux shells sous forme de "builti n". [[ est un mot clé comme l'est if et fait parti de la syntaxe du shell.
le différence se situe ici :
test $x = 1 [ $x = 1 ] [[ $x = 1 ]
dans les 2 premiers cas, le shell étend les variables, etc. et appelle la commande (ou builtin) une fois les remplacements effectués, ce qui donne, si x est vide : test = 1, ce qui est erreur de syntaxe au sens test. dans le cas de [[, $1 est remplacé par "", ce qui donne : [[ "" = 1 ], et ne provoque pas d'erreur de syntaxe. d'où la nécessité de toujours protéger les arguments avec de simples [. malheureusement, les [[ ne sont pas posix si je ne me trompe.
Cordialement,
Cyrille Lefevre. -- mailto:Cyrille.Lefevre-news% supprimer "%nospam% et ".invalid" pour me repondre.
Thomas a écrit :
(j'ai pas encore saisi toutes les subtilités, mais il a précisé q u'il y
a une différence entre [[ et [ )
Bonjour,
assez grande d'ailleurs, [ est, historiquement, un lien sur la commande t est.
par la suite, test a été intégré aux shells sous forme de "builti n".
[[ est un mot clé comme l'est if et fait parti de la syntaxe du shell.
le différence se situe ici :
test $x = 1
[ $x = 1 ]
[[ $x = 1 ]
dans les 2 premiers cas, le shell étend les variables, etc.
et appelle la commande (ou builtin) une fois les remplacements
effectués, ce qui donne, si x est vide : test = 1, ce qui est
erreur de syntaxe au sens test.
dans le cas de [[, $1 est remplacé par "", ce qui donne :
[[ "" = 1 ], et ne provoque pas d'erreur de syntaxe.
d'où la nécessité de toujours protéger les arguments avec de
simples [.
malheureusement, les [[ ne sont pas posix si je ne me trompe.
Cordialement,
Cyrille Lefevre.
--
mailto:Cyrille.Lefevre-news%nospam@laposte.net.invalid
supprimer "%nospam% et ".invalid" pour me repondre.
(j'ai pas encore saisi toutes les subtilités, mais il a précisé q u'il y a une différence entre [[ et [ )
Bonjour,
assez grande d'ailleurs, [ est, historiquement, un lien sur la commande t est. par la suite, test a été intégré aux shells sous forme de "builti n". [[ est un mot clé comme l'est if et fait parti de la syntaxe du shell.
le différence se situe ici :
test $x = 1 [ $x = 1 ] [[ $x = 1 ]
dans les 2 premiers cas, le shell étend les variables, etc. et appelle la commande (ou builtin) une fois les remplacements effectués, ce qui donne, si x est vide : test = 1, ce qui est erreur de syntaxe au sens test. dans le cas de [[, $1 est remplacé par "", ce qui donne : [[ "" = 1 ], et ne provoque pas d'erreur de syntaxe. d'où la nécessité de toujours protéger les arguments avec de simples [. malheureusement, les [[ ne sont pas posix si je ne me trompe.
Cordialement,
Cyrille Lefevre. -- mailto:Cyrille.Lefevre-news% supprimer "%nospam% et ".invalid" pour me repondre.
Thomas
In article , Cyrille Lefevre <cyrille.lefevre-news% wrote:
Thomas a écrit : > > (j'ai pas encore saisi toutes les subtilités, mais il a précisé qu'il y > a une différence entre [[ et [ ) >
Bonjour,
assez grande d'ailleurs, [ est, historiquement, un lien sur la commande test. par la suite, test a été intégré aux shells sous forme de "builtin". [[ est un mot clé comme l'est if et fait parti de la syntaxe du shell.
le différence se situe ici :
test $x = 1 [ $x = 1 ] [[ $x = 1 ]
dans les 2 premiers cas, le shell étend les variables, etc. et appelle la commande (ou builtin) une fois les remplacements effectués, ce qui donne, si x est vide : test = 1, ce qui est erreur de syntaxe au sens test. dans le cas de [[, $1 est remplacé par "", ce qui donne : [[ "" = 1 ], et ne provoque pas d'erreur de syntaxe. d'où la nécessité de toujours protéger les arguments avec de simples [. malheureusement, les [[ ne sont pas posix si je ne me trompe.
merci :-)
et à part ça, [ et [[ sont strictement équivalents ? cad que [ "$x" = 1 ] et [[ $x = 1 ]] (un seul ] convient, pour fermer ?) sont *strictement* équivalents ?
In article <4AB54CA0.6000307@laposte.net.invalid>,
Cyrille Lefevre <cyrille.lefevre-news%nospam@laposte.net.invalid>
wrote:
Thomas a écrit :
>
> (j'ai pas encore saisi toutes les subtilités, mais il a précisé qu'il y
> a une différence entre [[ et [ )
>
Bonjour,
assez grande d'ailleurs, [ est, historiquement, un lien sur la commande test.
par la suite, test a été intégré aux shells sous forme de "builtin".
[[ est un mot clé comme l'est if et fait parti de la syntaxe du shell.
le différence se situe ici :
test $x = 1
[ $x = 1 ]
[[ $x = 1 ]
dans les 2 premiers cas, le shell étend les variables, etc.
et appelle la commande (ou builtin) une fois les remplacements
effectués, ce qui donne, si x est vide : test = 1, ce qui est
erreur de syntaxe au sens test.
dans le cas de [[, $1 est remplacé par "", ce qui donne :
[[ "" = 1 ], et ne provoque pas d'erreur de syntaxe.
d'où la nécessité de toujours protéger les arguments avec de
simples [.
malheureusement, les [[ ne sont pas posix si je ne me trompe.
merci :-)
et à part ça, [ et [[ sont strictement équivalents ?
cad que
[ "$x" = 1 ]
et
[[ $x = 1 ]]
(un seul ] convient, pour fermer ?)
sont *strictement* équivalents ?
In article , Cyrille Lefevre <cyrille.lefevre-news% wrote:
Thomas a écrit : > > (j'ai pas encore saisi toutes les subtilités, mais il a précisé qu'il y > a une différence entre [[ et [ ) >
Bonjour,
assez grande d'ailleurs, [ est, historiquement, un lien sur la commande test. par la suite, test a été intégré aux shells sous forme de "builtin". [[ est un mot clé comme l'est if et fait parti de la syntaxe du shell.
le différence se situe ici :
test $x = 1 [ $x = 1 ] [[ $x = 1 ]
dans les 2 premiers cas, le shell étend les variables, etc. et appelle la commande (ou builtin) une fois les remplacements effectués, ce qui donne, si x est vide : test = 1, ce qui est erreur de syntaxe au sens test. dans le cas de [[, $1 est remplacé par "", ce qui donne : [[ "" = 1 ], et ne provoque pas d'erreur de syntaxe. d'où la nécessité de toujours protéger les arguments avec de simples [. malheureusement, les [[ ne sont pas posix si je ne me trompe.
merci :-)
et à part ça, [ et [[ sont strictement équivalents ? cad que [ "$x" = 1 ] et [[ $x = 1 ]] (un seul ] convient, pour fermer ?) sont *strictement* équivalents ?
D'après ce que j'ai compris, le contenu de [[]] est comme un sous-langage. -- Philippe Ivaldi. http://www.piprime.fr/
Cyrille Lefevre
Thomas a écrit :
et à part ça, [ et [[ sont strictement équivalents ? cad que [ "$x" = 1 ] et [[ $x = 1 ]] (un seul ] convient, pour fermer ?) sont *strictement* équivalents ?
Bonjour,
pas tout à fait, les [[ sont plus puissant que les simples [.
avec =, la 2ème opérande peut être une expression shell :
[[ " $PATH " = *" $ITEM "* ]] est équivalent, en plus concis, à :
case " $PATH " in *" $ITEM "*) then part ;; *) else part ;; esac
le groupement des expressions est plus lisible à mon sens :
tel que préconisé par susv3/4 ! sont gentil là-bas... j'espère que leur shell est optimisé pour non génération de fils inutile ?
on peut comparer une chaine de caractère à une autre via les symboles < ou >.
sous bash, il est même possible d'utiliser les expressions shell éten dues du ksh si shopt -s extglob est positionné tel que :
[[ $f = ?(.)profile*(.bak) ]] qui reconnait dont les .profile, profile et idem.bak
Cordialement,
Cyrille Lefevre. -- mailto:Cyrille.Lefevre-news% supprimer "%nospam% et ".invalid" pour me repondre.
Thomas a écrit :
et à part ça, [ et [[ sont strictement équivalents ?
cad que
[ "$x" = 1 ]
et
[[ $x = 1 ]]
(un seul ] convient, pour fermer ?)
sont *strictement* équivalents ?
Bonjour,
pas tout à fait, les [[ sont plus puissant que les simples [.
avec =, la 2ème opérande peut être une expression shell :
[[ " $PATH " = *" $ITEM "* ]] est équivalent, en plus concis, à :
case " $PATH " in
*" $ITEM "*) then part ;;
*) else part ;;
esac
le groupement des expressions est plus lisible à mon sens :
et à part ça, [ et [[ sont strictement équivalents ? cad que [ "$x" = 1 ] et [[ $x = 1 ]] (un seul ] convient, pour fermer ?) sont *strictement* équivalents ?
Bonjour,
pas tout à fait, les [[ sont plus puissant que les simples [.
avec =, la 2ème opérande peut être une expression shell :
[[ " $PATH " = *" $ITEM "* ]] est équivalent, en plus concis, à :
case " $PATH " in *" $ITEM "*) then part ;; *) else part ;; esac
le groupement des expressions est plus lisible à mon sens :