L'impossibilité d'Exécution.exec() pour exécuter la commande du shell “echo” dans le code Java Android

Je peux utiliser Runtime.exec() pour exécuter des commandes shell comme "getprop" et "ls system" et qu'ils fonctionnent très bien.

Cependant, lorsque j'utilise "echo $BOOTCLASSPATH", "echo \\$BOOTCLASSPATH" ou "echo HelloWorld", il ne l'affiche pas dans stdout.

Le logcat montre:

I/AndroidRuntime( 4453): VM exiting with result code -1.

Voici mon code:

try {
    java.lang.Process proc = Runtime.getRuntime().exec("echo -e \$BOOTCLASSPATH");
    String line = null;

    InputStream stderr = proc.getErrorStream();
    InputStreamReader esr = new InputStreamReader (stderr);
    BufferedReader ebr = new BufferedReader (esr);
    while ( (line = ebr.readLine()) != null )
        Log.e("FXN-BOOTCLASSPATH", line);

    InputStream stdout = proc.getInputStream();
    InputStreamReader osr = new InputStreamReader (stdout);
    BufferedReader obr = new BufferedReader (osr);
    while ( (line = obr.readLine()) != null )
        Log.i("FXN-BOOTCLASSPATH", line);

    int exitVal = proc.waitFor();
    Log.d("FXN-BOOTCLASSPATH", "getprop exitValue: " + exitVal);
} catch (Exception e) {
    e.printStackTrace();
}
L'espérance ceci vous aider.
Il semble que vous n'avez pas de /bin/echo sur ce système; echo est également disponible comme une commande shell. Essayez de exec sh -c "echo -e \\$BOOTCLASSPATH"
Ce lien renvoie à des problèmes sur Windows. Ick.
J'ai essayé ceci: String[] cmdline = { "sh", "-c", "echo $BOOTCLASSPATH" }; Runtime.getRuntime().exec(cmdline); et il fonctionne. Merci les gars.
Merci Copain @QYLin , vous avez sauvé ma vie. pouvez-vous expliquer pourquoi cela se produit?

OriginalL'auteur QY Lin | 2014-08-08