adb shell su -c
es un comando adb muy utilizado. Normalmente, basta con añadir argumentos a la línea de comandos de la siguiente manera:
adb shell su -c echo ab
Sin embargo, las cosas pueden ser complicadas si quieres añadir citas. Por ejemplo, para imprimir a b
(hay 2 espacios), estos no funcionarán:
adb shell su -c echo "a b"
adb shell su -c "echo \"a b\""
adb shell su -c "echo 'a b'"
Tienes que usar esto:
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'\""
Me gustaría saber cuál es la forma estándar de escribir dicho comando. Estándar significa que maneja las comillas correctamente y de la manera más sencilla.
Mi investigación actual:
-
adb
maneja los argumentos de los comandos de la misma manera quessh
: Los argumentos se conectan (con espacio) en una cadena, y esa cadena se ejecuta. -
su -c
espera una sola cadena como línea de comando, y no hace la concatenación por ti.
Así que creo que la forma más estándar de escribir adb shell su -c
debería ser así:
adb shell "su -c \"echo \\\"a b\\\"\""
Sin embargo, no estoy muy seguro de ello. ¿Alguien tiene una referencia concreta que confirme lo que estoy haciendo o que demuestre que lo estoy haciendo mal?
0 votos
Cuando me encuentro en una situación así, lo hago:
adb shell 'su -c "echo a\ \ b"'
. Utilizo comillas simples para encerrar todo después deadb shell
y comillas dobles dentro, siempre que sea necesario.