Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 17/03/2024, à 18:02

Astrolivier

[résolu] while read ne marche pas avec adb

salut,

je veux envoyer des sms avec adb et un fichier de numéros de téléphone (chaque ligne un numéro)

le programme

#!/usr/bin/env bash

exec 5> debug_output.txt
BASH_XTRACEFD="5"
PS4='$LINENO: '
set -x

declare message
declare file

message="coucou est-ce que tu reçois ce message ? "
file="phoneNumber.txt"


while read -r phone_number ; do

    adb shell service call isms 7 i32 0 s16 "com.android.mms.service" s16 "${phone_number}" s16 "null" s16 "$message" s16 "null" s16 "null"
    sleep 5
done < "$file"

debug_output.txt

8: declare message
9: declare file
11: message='coucou est-ce que tu reçois ce message ? '
12: file=phoneNumber.txt
15: read -r phone_number
17: adb shell service call isms 7 i32 0 s16 com.android.mms.service s16 06XXXXXXX s16 null s16 'coucou est-ce que tu reçois ce message ? ' s16 null s16 null
18: sleep 5
15: read -r phone_number

le message passe bien sur le premier numéro puis ça ne marche plus au deuxième
j'ai aussi testé avec "while true" et "read" dans la boucle et là la ça répète bien mais le champ du numéro de téléphone est vide.
quand je fais un "echo $phone_number" au lieu de adb là tout va bien ça m'affiche les numéros


avez vous s'il vous plaît une idée de pourquoi while read + adb ne marche pas ?

Dernière modification par Astrolivier (Le 17/03/2024, à 23:25)


S'il faut absolument faire des sacrifices pour assurer le progrès de l'humanité, ne serait-il pas indispensable de s'en tenir au principe selon lequel c'est à ceux dont on exige le sacrifice que la décision doit revenir en dernier ressort ? (howard zinn)

Hors ligne

#2 Le 17/03/2024, à 19:56

kamaris

Re : [résolu] while read ne marche pas avec adb

Peut-être que adb mange l'entrée standard.
Est-ce que ça fonctionne mieux comme ça :

exec 3<"$file"
while read -r -u 3 phone_number ; do

    adb shell service call isms 7 i32 0 s16 "com.android.mms.service" s16 "${phone_number}" s16 "null" s16 "$message" s16 "null" s16 "null"
    sleep 5
done
exec 3<&-

Hors ligne

#3 Le 17/03/2024, à 22:37

Watael

Re : [résolu] while read ne marche pas avec adb

dans le man d'adb,  je vois une option -n (don't read from stdin), qui suggère comme le dit kamaris qu'adb "mange l'entrée standard".


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#4 Le 17/03/2024, à 23:24

Astrolivier

Re : [résolu] while read ne marche pas avec adb

wahou z'êtes trop fort ! ça marche niquel,

merci

alors pour ceux que ce programme intéresserait

- ça marche avec un tel /e/os, mais pas avec un s10 free non routé (et inroutable) je sais pas vraiment pourquoi, mais ça devrait marcher avec les android >6 (faire des recherches avec la ligne adb pour plus d'info)
- dans le message, mieux vaut mettre des  "\" pour chaque espace (coucou\ comment\ ça\ va) autrement ça ne passe que le premier mot (dans la ligne adb seule on peut mettre des simples quotes (') en plus des doubles pour palier à ça)


S'il faut absolument faire des sacrifices pour assurer le progrès de l'humanité, ne serait-il pas indispensable de s'en tenir au principe selon lequel c'est à ceux dont on exige le sacrifice que la décision doit revenir en dernier ressort ? (howard zinn)

Hors ligne