adb shell su -c
est une commande adb couramment utilisée. Normalement, vous avez juste besoin d'ajouter des arguments à la ligne de commande comme ceci:
adb shell su -c echo ab
Cependant, les choses peuvent être délicates si vous souhaitez ajouter des guillemets. Par exemple, pour imprimer a b
(il y a 2 espaces), ces commandes ne fonctionneront pas:
adb shell su -c echo "a b"
adb shell su -c "echo \"a b\""
adb shell su -c "echo 'a b'"
Vous devez utiliser ces commandes:
adb shell su -c "\"echo \\\"a b\\\"\""
adb shell "su -c \"echo \\\"a b\\\"\""
adb shell su -c "\"echo 'a b'\""
adb shell "su -c \"echo 'a b'\""
J'aimerais savoir quelle est la manière standard d'écrire une telle commande. Standard signifie qu'elle gère correctement les guillemets de la manière la plus directe.
Mes recherches actuelles:
-
adb
gère les arguments de commande de la même manière quessh
: les arguments sont connectés (avec un espace) dans une chaîne, et cette chaîne est exécutée. -
su -c
attend une seule chaîne en tant que ligne de commande, et il ne réalise pas la concaténation pour vous.
Je pense donc que la manière la plus standard d'écrire adb shell su -c
devrait être comme suit:
adb shell "su -c \"echo \\\"a b\\\"\""
Cependant, je ne suis pas très confiant à ce sujet. Est-ce que quelqu'un a une référence concrète confirmant ce que je fais ou montrant que je me trompe?
0 votes
Lorsque je me trouve dans ce genre de situation, je fais :
adb shell 'su -c "echo a\ \ b"'
. J'utilise des apostrophes pour encadrer tout ce qui suitadb shell
et des guillemets doubles à l'intérieur, chaque fois que nécessaire.