OVH Cloud OVH Cloud

Message d'erreur pendant un script

30 réponses
Avatar
Oleane Newsgroup
Bonjour !

avec KSH, j'utilise la commande 'cp /usr1/appli/data /export/donnees' pour
faire une copie du répertoire data vers le répertoire donnees. cela
fonctionne très bien !

mais dans un script, la même commande génère un message d'erreur :
exdata[6]: /bin/cp: 0403-027 Liste de paramètres trop longue.

exdata est le nom de mon script

Avez-vous une idée pour cette erreur ?

Merci

10 réponses

1 2 3
Avatar
lhabert
Stephane Chazelas :

Ya "[" qui n'est pas standard.

[ ! = ! ]

renvoie false (enfin une erreur)


Ah, tiens, la norme dit que ça doit renvoyer vrai. J'aurai appris un truc
aujourd'hui :-)

ce qui fait que [ "$a" = "$b" ] ne marche pas.


Effectivement. Enfin j'imagine qu'à peu près tous les sh sont cassés sur ce
point, vu que tout le monde écrit « x"$a" = x"$b" ».

Avatar
Stephane Chazelas
2006-12-12, 21:40(+00), Luc Habert:
Stephane Chazelas :

Ya "[" qui n'est pas standard.

[ ! = ! ]

renvoie false (enfin une erreur)


Ah, tiens, la norme dit que ça doit renvoyer vrai. J'aurai appris un truc
aujourd'hui :-)


Oui, elle specifie meme l'algorithme pour un nombre d'arguments
(hormis "[" et "]") de 2 ou 3.

Au dessus, c'est unspecified.

ce qui fait que [ "$a" = "$b" ] ne marche pas.


Effectivement. Enfin j'imagine qu'à peu près tous les sh sont cassés sur ce
point, vu que tout le monde écrit « x"$a" = x"$b" ».


Oui, certaines versions de ksh ont aussi le probleme (et le
Bourne shell, mais celui-ci n'est pas censé etre un sh
conformant anyway).

--
Stéphane


Avatar
Stephane Chazelas
2006-12-12, 22:14(+01), Moi:

$ bash -c 'printf "<%s>n" ${a-foo "" ""}'
<foo>


on peut avoir le même avec sh ??


Je ne comprends pas ta question. Avec quel sh?
Avec le sh d'un Linux (bash), tu auras la meme chose. Avec le sh
d'un BSD (ash-ish) tu auras <foo>n<>n<>n, avec celui d'un
Unix commercial <foo>n, <foo>n<>n ou <foo>n<>n<>n suivant
la version de ksh, avec le Bourne shell (un sh dans un autre
repertoire que le sh standard sur les Unix commerciaux), tu
auras une erreur, sur les systemes ou sh est un zsh ou pdksh
(comme certains Unix derivés de darwin ou FreeBSD)
<foo>n<>n<>n.

~$ a=$(LC_ALL=fr_FR.UTF-8 printf 'u20ac')
~$ export a
~$ LC_ALL=fr_FR.UTF-8 bash -c 'printf "%dn" ""$a"'
-30
~$ LC_ALL=fr_FR.UTF-8 bash -c 'printf "%un" ""$a"'
18446744073709551586



même question que supra


Je n'ai pas croisé de sh ou de printf qui renvoie la bonne valeur.
La plupart renvoie la valeur du premier byte du caractere
d'euro (226) au lieu du code du caractere euro (0x20ac)

--
Stéphane


Avatar
Marc
Stephane Chazelas wrote:

Je n'ai pas croisé de sh ou de printf qui renvoie la bonne valeur.


Comment font AIX ou Solaris pour être certifiés conformes si il y a des
trucs connus comme ça ?

Avatar
Moi


$ bash -c 'printf "<%s>n" ${a-foo "" ""}'
<foo>


on peut avoir le même avec sh ??


Je ne comprends pas ta question. Avec quel sh?


en tapant sh au lieu de bash



Avatar
Benoit Izac
Bonjour,

le 12/12/2006 à 18:50, Moi a écrit dans le message
<elmq0d$mc7$ :

Sur la plupart des Unix commerciaux, ksh == sh
ksh est une implementation du sh standard.


Sur les Unix à deux balles, style *.BSD, sh c'est sh.


C'est faux au moins pour OpenBSD où sh == ksh et pour FreeBSD où
sh == ash (bien qu'il soit appelé sh). Pour NetBSD, je ne sais pas.

--
Benoit Izac


Avatar
Moi
Bonjour,

le 12/12/2006 à 18:50, Moi a écrit dans le message
<elmq0d$mc7$ :

Sur la plupart des Unix commerciaux, ksh == sh
ksh est une implementation du sh standard.
Sur les Unix à deux balles, style *.BSD, sh c'est sh.



C'est faux au moins pour OpenBSD où sh == ksh et pour FreeBSD où
sh == ash (bien qu'il soit appelé sh). Pour NetBSD, je ne sais pas.


NetBSD: /bin/sh = /bin/sh
ce n'est pas un lien



Avatar
Benoit Izac
Bonjour,

le 16/12/2006 à 09:10, Moi a écrit dans le message
<em09hf$9k4$ :

Sur la plupart des Unix commerciaux, ksh == sh
ksh est une implementation du sh standard.
Sur les Unix à deux balles, style *.BSD, sh c'est sh.



C'est faux au moins pour OpenBSD où sh == ksh et pour FreeBSD où
sh == ash (bien qu'il soit appelé sh). Pour NetBSD, je ne sais pas.


NetBSD: /bin/sh = /bin/sh
ce n'est pas un lien


FreeBSD non plus mais comme il est mentionné ici :
<http://www.freebsd.org/cgi/cvsweb.cgi/src/bin/sh/TOUR?rev=1.7&content-type=text/x-cvsweb-markup>
c'est bien dérivé d'ash.

Même chose pour NetBSD :
<http://cvsweb.netbsd.org/bsdweb.cgi/src/bin/sh/TOUR?rev=1.9&content-type=text/x-cvsweb-markup>

Ils auraient très bien pu compiler le tout en /bin/ash et faire un lien
(symbolique ou en dur) /bin/sh qui pointe dessus.

--
Benoit Izac




Avatar
Moi
Bonjour,

le 16/12/2006 à 09:10, Moi a écrit dans le message
<em09hf$9k4$ :

Sur la plupart des Unix commerciaux, ksh == sh
ksh est une implementation du sh standard.
Sur les Unix à deux balles, style *.BSD, sh c'est sh.

C'est faux au moins pour OpenBSD où sh == ksh et pour FreeBSD où

sh == ash (bien qu'il soit appelé sh). Pour NetBSD, je ne sais pas.
NetBSD: /bin/sh = /bin/sh

ce n'est pas un lien


FreeBSD non plus mais comme il est mentionné ici :
<http://www.freebsd.org/cgi/cvsweb.cgi/src/bin/sh/TOUR?rev=1.7&content-type=text/x-cvsweb-markup>
c'est bien dérivé d'ash.


Merci pour l'info, j'ai quand même commencé par un 2.2.5

Même chose pour NetBSD :
<http://cvsweb.netbsd.org/bsdweb.cgi/src/bin/sh/TOUR?rev=1.9&content-type=text/x-cvsweb-markup>


je sais

Ils auraient très bien pu compiler le tout en /bin/ash et faire un lien
(symbolique ou en dur) /bin/sh qui pointe dessus.


Ben moi sur mon NetBSD j'ai fait un lien bash sh pour qu'il supporte la
connerie Linuxienne

Linux m'a tuer





Avatar
Stephane Chazelas
2006-12-16, 12:36(+01), Moi:
[...]
Ils auraient très bien pu compiler le tout en /bin/ash et faire un lien
(symbolique ou en dur) /bin/sh qui pointe dessus.


Ben moi sur mon NetBSD j'ai fait un lien bash sh pour qu'il supporte la
connerie Linuxienne

Linux m'a tuer
[...]


Ne melangeons pas tout. bash est GNU, pas Linux. Et le pire de
bash comme de sh vient de ksh qui vient d'AT&T comme la plupart
de ce qui a fait Unix. Pareil pour le sh des BSDs qui vient de
ash qui etait au depart une reimplementation libre du Bourne
shell (encore d'AT&T) et qui a été modifié pas la suite pour
etre conforme au standard, standard qui lui-meme est inspiré de
ksh.

La connerie vient de ksh. Voir rc pour un shell mieux conçu. zsh
a aussi corrigé pas mal des erreurs de ksh.

--
sTÉPhane


1 2 3