OVH Cloud OVH Cloud

AppleScript me prend le chou

15 réponses
Avatar
M.V.
Hello,

Si j'utilise AppleScript, la commande :

do shell script "echo -n VW5lIGZhbWlsbGUgZMOpY2ltw6llIHBhciBsYSBDb3ZpZC0xOSDD | base64 -D | od -t x1 -An"

me donne comme résultat :
fa 75 56 e6 52 06 66 16 d6 96 c6 c6 52 06 4c 3a
96 36 96 dc 3a 96 52 07 06 17 22 06 c6 12 04 36
f7 66 96 42 d3 13 92

mais si je tape directement dans Terminal :

echo -n VW5lIGZhbWlsbGUgZMOpY2ltw6llIHBhciBsYSBDb3ZpZC0xOSDD | base64 -D | od -t x1 -An

j'obtiens :
55 6e 65 20 66 61 6d 69 6c 6c 65 20 64 c3 a9 63
69 6d c3 a9 65 20 70 61 72 20 6c 61 20 43 6f 76
69 64 2d 31 39 20 c3

D'après <https://base64.guru/converter/decode/hex> référencé par
Olivier Miakinen (donc fiable), c'est le résultat de Terminal qui
est correct.

Est-ce que quelqu'un pourrait m'expliquer pourquoi AS ne me donne pas
le bon résultat ?

Merci d'avance.

X-post et fu2 fr.comp.sys.mac.programmation
--
Michel VAUQUOIS - <http://michelvauquois.fr>

5 réponses

1 2
Avatar
M.V.
Le 26 novembre 2021 Í  11 h 22, Joseph-B a tenu les propos suivants :
Supprimer le -n, dans le Terminal mais surtout dans la commande
Applescript retourne la bonne valeur.

En effet et tu confirmes ce qu'avait écrit Fleuger.
Je m'aperçois de plus que plein de petits trucs qui fonctionnent
directement dans Terminal ne fonctionnent pas via AS : j'ai déjÍ  signalé
la commande avec echo -e et je viens de voir que dans Terminal :
ps -o comm= $$
donne bien le shell utilisé alors que dans AS :
do shell script "ps -o comm= $$"
répond…
ps
!!!
C'est
do shell script "ps -o comm= "
qui répond correctement.
Merci.
--
Michel VAUQUOIS - <http://michelvauquois.fr>
Avatar
Fleuger
Le 26 novembre 2021 Í  08:34, pehache a écrit ceci :
Je n'avais pas d'idée toute faite sur la question, juste des pistes. Par
exemple que le shell lancé par Apple Script n'est peut-être pas le même,
et/ou que sa configuration est différente, de celui du Terminal. Entre
les différents shells il y a parfois des comportements différents.
D'ailleurs je vois que "echo -n toto" ne se comporte pas pareil dans
bash et dans zsh (du moins avec leurs configs par défaut).
Et aussi de tester individuellement chacune des 3 commandes enchaÍ®nées
par les pipes, pour voir laquelle est "fautive".

Merci pour tes explications.
J'ai zsh sur mon mac
➜ ~ echo toto
toto
➜ ~ echo -n "toto"
toto%
➜ ~ echo -e toto
toto
➜ ~ echo -e "toto"
toto
L'option -n destinée Í  supprimer le caractère de fin de ligne ne
fonctionne pas alors que -e fonctionne.
Le man echo apple date de 2003
Sur mon Ubuntu virtualisé il date de 2019 et c'est bash et différend de
<https://ss64.com/bash/echo.html>
L'option -n supprime le retour Í  ligne.
Le nouveau prompt s'inscrit en suivant directement sans espace.
:~$ echo -n toto
:~$ echo toto
toto
:~$
--
Gérard FLEUROT
Avatar
M.V.
Le 26 novembre 2021 Í  13 h 57, Fleuger a tenu les propos suivants :
J'ai zsh sur mon mac
➜ ~ echo toto
toto
➜ ~ echo -n "toto"
toto%
➜ ~ echo -e toto
toto
➜ ~ echo -e "toto"
toto

En bash :
echo toto ➜ toto avec retour ligne et nouveau prompt
echo -n toto ➜ toto sans saut de ligne avant le nouveau prompt
echo -e toto ➜ toto avec retour ligne et nouveau prompt
Avec AS (Terminal en bash) :
do shell script "echo -n toto" ➜ -n toto
do shell script "echo -e toto" ➜ -e toto
Mêmes résultats avec AS quand Terminal est en zsh
--
Michel VAUQUOIS - <http://michelvauquois.fr>
Avatar
Fleuger
Le 26 novembre 2021 Í  15:11, M.V. a écrit ceci :
En bash :
echo toto ➜ toto avec retour ligne et nouveau prompt
echo -n toto ➜ toto sans saut de ligne avant le nouveau prompt
echo -e toto ➜ toto avec retour ligne et nouveau prompt
Avec AS (Terminal en bash) :
do shell script "echo -n toto" ➜ -n toto
do shell script "echo -e toto" ➜ -e toto
Mêmes résultats avec AS quand Terminal est en zsh

Ça confirme ce qu'a dit Joseph.
--
Gérard FLEUROT
Avatar
Olivier Miakinen
Le 27/11/2021 17:10, j'écrivais :
Cela dit, ça n'explique pas comment le résultat peut se retrouver décalé
d'un nombre d'octets demi-entier.

Quelqu'un a une explication ? Comme avec un bon roman policier je ne
serai pas tranquille tant que je ne saurai pas ce qui a pu se passer.
--
Olivier Miakinen
1 2