OVH Cloud OVH Cloud

script shell : if

12 réponses
Avatar
Thomas
je veux ecrire qqch comme

if ( $1 = 'thomas' ) then

mais je ne trouve pas :

if: Expression Syntax.

qqn peut m'aider svp ?

--
"In a world without walls and fences, who needs windows and gates ?"
"petit Free qui devient grand, gêne les requins blancs"

10 réponses

1 2
Avatar
Marc Boyer
Thomas wrote:
je veux ecrire qqch comme

if ( $1 = 'thomas' ) then
mais je ne trouve pas :

if: Expression Syntax.

qqn peut m'aider svp ?


Avec quel shell ?

Marc Boyer
--
La contractualisation de la recherche, c'est me donner de l'argent pour
faire ce que je ne sais pas faire, que je fais donc mal, pendant que ce
que je sais faire, je le fais sans moyens...

Avatar
Stephane Chazelas
2004-09-3, 14:37(+00), Marc Boyer:
Thomas wrote:
je veux ecrire qqch comme

if ( $1 = 'thomas' ) then
mais je ne trouve pas :

if: Expression Syntax.

qqn peut m'aider svp ?


Avec quel shell ?
[...]


Ce message d'erreur appartient a tcsh. Il faut mieux eviter
d'utiliser ce shell pour les script.

Utiliser un shell de type Bourne et faire:

if [ thomas = "$1" ]; then
echo yes
else
echo no
fi

--
Stephane


Avatar
Thomas
In article (Dans l'article)
,
Stephane Chazelas wrote (écrivait) :

2004-09-3, 14:37(+00), Marc Boyer:
Thomas wrote:
je veux ecrire qqch comme

if ( $1 = 'thomas' ) then
mais je ne trouve pas :

if: Expression Syntax.

qqn peut m'aider svp ?


Avec quel shell ?
[...]


Ce message d'erreur appartient a tcsh.


oops ! excusez moi, tout le monde :-)

Il faut mieux eviter
d'utiliser ce shell pour les script.


deja entendu dire, mais c'est apparement ce qui est preconisé dans mon
cas :
http://www.bombich.com/mactips/loginhooks.html

tu sais pas la reponse ?

--
"In a world without walls and fences, who needs windows and gates ?"
"petit Free qui devient grand, gêne les requins blancs"



Avatar
Stephane Chazelas
2004-09-03, 17:04(+02), Thomas:
[...]
deja entendu dire, mais c'est apparement ce qui est preconisé dans mon
cas :
http://www.bombich.com/mactips/loginhooks.html


Je ne vois rien la-dedans qui preconise tcsh.

tu sais pas la reponse ?


Je sais qu'elle se trouve dans la page de man de tcsh.

--
Stephane

Avatar
Thomas
In article (Dans l'article)
,
Stephane Chazelas wrote (écrivait) :

2004-09-03, 17:04(+02), Thomas:
[...]
deja entendu dire, mais c'est apparement ce qui est preconisé dans mon
cas :
http://www.bombich.com/mactips/loginhooks.html


Je ne vois rien la-dedans qui preconise tcsh.


c'est juste que c'est ce qu'il utilise partout


tu sais pas la reponse ?


Je sais qu'elle se trouve dans la page de man de tcsh.


trop compliqué

il parait que le meilleur pour les scripts c'est sh
c'est un shell de type bourne ?



peux tu m'aider à faire la conversion stp ?

j'avais :


#!/bin/tcsh -f
if ( $#argv < 1 ) then
echo "No user specified!"
exit 1
endif
if ( $1 = thomas) then
ping -i 60 192.168.1.0 &
endif
exit 0


si on convertit comme ca ca va ?

#!/bin/sh -f
if ( "$#argv" < 1 ) then
echo "No user specified!"
exit 1
fi
if ( "$1" = thomas) then
ping -i 60 192.168.1.0 &
fi
exit 0


-f c'est pareil avec tcsh et avec sh ?

merci :-)

--
"In a world without walls and fences, who needs windows and gates ?"
"petit Free qui devient grand, gêne les requins blancs"


Avatar
Stephane Chazelas
2004-09-03, 17:58(+02), Thomas:
[...]
il parait que le meilleur pour les scripts c'est sh
c'est un shell de type bourne ?


"sh" est le shell par defaut du systeme, et il est Bourne-type
sur tous les systemes. Il est conformant a la norme POSIX sur
tous les systemes conformants a la norme POSIX, mais il est
peut-etre different d'un systeme a l'autre. Ce qui est garanti,
c'est que si tu ecris ton script dans une syntaxe qui est
conforme a
http://www.opengroup.org/onlinepubs/009695399/idx/xcu.html
alors il marchera avec tous les "sh" de tous les systemes
conformants (le probleme est qu'il y a certains systemes qui
n'ont pas mis ce "sh" dans /bin).

peux tu m'aider à faire la conversion stp ?


trop compliqué d-:

--
Stephane

Avatar
Thomas
In article (Dans l'article)
,
Stephane Chazelas wrote (écrivait) :

2004-09-03, 17:58(+02), Thomas:
[...]
il parait que le meilleur pour les scripts c'est sh
c'est un shell de type bourne ?


"sh" est le shell par defaut du systeme, et il est Bourne-type
sur tous les systemes. Il est conformant a la norme POSIX sur
tous les systemes conformants a la norme POSIX, mais il est
peut-etre different d'un systeme a l'autre. Ce qui est garanti,
c'est que si tu ecris ton script dans une syntaxe qui est
conforme a
http://www.opengroup.org/onlinepubs/009695399/idx/xcu.html
alors il marchera avec tous les "sh" de tous les systemes
conformants (le probleme est qu'il y a certains systemes qui
n'ont pas mis ce "sh" dans /bin).


merci pour l'explication :-)
donc c'est bien ce que je pensais, cad sh est notament le plus portable


peux tu m'aider à faire la conversion stp ?


trop compliqué d-:


allé, soit pas ironique stp :-)
man tcsh c'est reellement trop compliqué pour moi

man chmod, par ex, c'est dans mes moyen, meme si je comprends pas tout
je peux faire le tri

--
"In a world without walls and fences, who needs windows and gates ?"
"petit Free qui devient grand, gêne les requins blancs"


Avatar
Arnaud Launay
Le 03 Sep 2004 14:52:48 GMT, Stephane Chazelas écrivit:
Utiliser un shell de type Bourne et faire:
if [ thomas = "$1" ]; then


Hmm, me semble qu'il vaut mieux utiliser un truc du genre
if [ "xthomas" = "x$1" ];

Je ne sais plus quel est le cas particulier que ça évite, mais
j'ai dû tomber dessus une paire de fois.

Arnaud.
--
http://launay.org/blog/
http://www.cusae.com/

Avatar
Stephane Chazelas
2004-09-22, 13:12(+00), Arnaud Launay:
Le 03 Sep 2004 14:52:48 GMT, Stephane Chazelas écrivit:
Utiliser un shell de type Bourne et faire:
if [ thomas = "$1" ]; then


Hmm, me semble qu'il vaut mieux utiliser un truc du genre
if [ "xthomas" = "x$1" ];
[...]


Non, avec:

[ thomas = "$1" ]

il ne devrait pas y avoir de probleme quelque soit la valeur
de "$1".

Avec:

[ "$1" = thomas ]
ou
[ "$2" = "$1" ]

il peut y en avoir:

$ sh -c '[ "!" = "thomas" ]'
sh: test: argument expected


C'est sur qu'avec

[ xwhatever = "x$1" ]

on est tranquille.

Les shell recents ont maintenant des "conditional expression"
([[...]]) qui evitent le probleme.

--
Stephane


Avatar
Laurent Wacrenier
Arnaud Launay écrit:
Hmm, me semble qu'il vaut mieux utiliser un truc du genre
if [ "xthomas" = "x$1" ];

Je ne sais plus quel est le cas particulier que ça évite, mais
j'ai dû tomber dessus une paire de fois.


Au cas ou "thomas" serait un élément de syntaxe de "test", sur
certains vieux shells :

http://www.opengroup.org/onlinepubs/009695399/utilities/test.html

1 2