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
Pascal Bourguignon
Nicolas Ecarnot writes:
Bonjour,
Dans un shell ksh, je souhaite comparer une variable avec une chaine. Habituellement, je fais ainsi :
CHAINE='un test' if [ ${CHAINE} = 'abcd' ]; then ... fi
Mais si la CHAINE contient un espace, mon shell me dit : [: un: unexpected operator
J'ai alors essayé : if [ "$CHAINE" = 'abcd' ]; then ou if [ "${CHAINE}" = 'abcd' ]; then
mais rien n'y fait.
Comment puis-je m'en sortir ?
En utilisant bash?
$ chaine="a b c" $ if [ "$chaine" = "a b c" ] ; then echo yes ; else echo no ; fi yes $ if [ "$chaine" = 'a b c' ] ; then echo yes ; else echo no ; fi yes
-- __Pascal_Bourguignon__ http://www.informatimago.com/ There is no worse tyranny than to force a man to pay for what he doesn't want merely because you think it would be good for him.--Robert Heinlein http://www.theadvocates.org/
Nicolas Ecarnot <nec@verdon.acc.fr> writes:
Bonjour,
Dans un shell ksh, je souhaite comparer une variable avec une chaine.
Habituellement, je fais ainsi :
CHAINE='un test'
if [ ${CHAINE} = 'abcd' ]; then
...
fi
Mais si la CHAINE contient un espace, mon shell me dit :
[: un: unexpected operator
J'ai alors essayé :
if [ "$CHAINE" = 'abcd' ]; then
ou
if [ "${CHAINE}" = 'abcd' ]; then
mais rien n'y fait.
Comment puis-je m'en sortir ?
En utilisant bash?
$ chaine="a b c"
$ if [ "$chaine" = "a b c" ] ; then echo yes ; else echo no ; fi
yes
$ if [ "$chaine" = 'a b c' ] ; then echo yes ; else echo no ; fi
yes
--
__Pascal_Bourguignon__ http://www.informatimago.com/
There is no worse tyranny than to force a man to pay for what he doesn't
want merely because you think it would be good for him.--Robert Heinlein
http://www.theadvocates.org/
Dans un shell ksh, je souhaite comparer une variable avec une chaine. Habituellement, je fais ainsi :
CHAINE='un test' if [ ${CHAINE} = 'abcd' ]; then ... fi
Mais si la CHAINE contient un espace, mon shell me dit : [: un: unexpected operator
J'ai alors essayé : if [ "$CHAINE" = 'abcd' ]; then ou if [ "${CHAINE}" = 'abcd' ]; then
mais rien n'y fait.
Comment puis-je m'en sortir ?
En utilisant bash?
$ chaine="a b c" $ if [ "$chaine" = "a b c" ] ; then echo yes ; else echo no ; fi yes $ if [ "$chaine" = 'a b c' ] ; then echo yes ; else echo no ; fi yes
-- __Pascal_Bourguignon__ http://www.informatimago.com/ There is no worse tyranny than to force a man to pay for what he doesn't want merely because you think it would be good for him.--Robert Heinlein http://www.theadvocates.org/
Stephane Chazelas
2004-02-04, 15:10(+00), Nicolas Ecarnot:
CHAINE='un test' if [ ${CHAINE} = 'abcd' ]; then ... fi
Mais si la CHAINE contient un espace, mon shell me dit : [: un: unexpected operator
J'ai alors essayé : if [ "$CHAINE" = 'abcd' ]; then [...]
Ben, si ça ne marche pas avec ça, il est vraiment carrément buggé ton shell. (pourquoi tu mets "ksh" dans le subjet si c'est pas du ksh?).
Note qu'avec certains shells/tests, tu peux avoir des problèmes avec CHAINE='!' ou CHAINE='(' ou CHAINE='-<x>'. Vaut mieux faire
[ abcd = "$CHAINE" ] ou encore mieux [ "z$CHAINE" = zabcd ]
Ben, si ça ne marche pas avec ça, il est vraiment carrément buggé ton shell. (pourquoi tu mets "ksh" dans le subjet si c'est pas du ksh?).
C'est bien du ksh, mais je suis un polio. Je viens de me rendre compte dans mon looooong script qu'une des conditions n'avait pas été protégée. J'ai essayé d'annuler cet article, mais on m'a malencontreusement payé un café entre temps.
Je me répends en excuses et vous remercie encore de participer à ma compréhension d'unix, amen.
-- Nicolas Ecarnot
Le 04-02-2004, Stephane Chazelas <cette.adresse@est.invalid> a écrit :
Ben, si ça ne marche pas avec ça, il est vraiment carrément
buggé ton shell. (pourquoi tu mets "ksh" dans le subjet si c'est
pas du ksh?).
C'est bien du ksh, mais je suis un polio.
Je viens de me rendre compte dans mon looooong script qu'une des conditions n'avait
pas été protégée.
J'ai essayé d'annuler cet article, mais on m'a malencontreusement payé un café
entre temps.
Je me répends en excuses et vous remercie encore de participer à ma compréhension
d'unix, amen.
Ben, si ça ne marche pas avec ça, il est vraiment carrément buggé ton shell. (pourquoi tu mets "ksh" dans le subjet si c'est pas du ksh?).
C'est bien du ksh, mais je suis un polio. Je viens de me rendre compte dans mon looooong script qu'une des conditions n'avait pas été protégée. J'ai essayé d'annuler cet article, mais on m'a malencontreusement payé un café entre temps.
Je me répends en excuses et vous remercie encore de participer à ma compréhension d'unix, amen.