adb shell输入文字不带& &符号

时间:2014-09-11 15:27:02

标签: android adb

当我用&输入一些文字时然后我的完整文字进入编辑框。

D:\ Apps \ Android-SDK \ tools> adb shell输入文本hello& hello 'hello'不被识别为内部或外部命令, 可操作程序或批处理文件。

只是打招呼。但另一个&和/或你好的字符没有输入。

当我键入以下内容时 adb设备和adb设备 它将提供2个输出。

adb shell输入文本值应采用其他格式,例如引号或其他内容。

我如何输入此值&字符?

3 个答案:

答案 0 :(得分:5)

您需要将字符串封装在引号中并转义&符号"hello\&hello"

答案 1 :(得分:2)

( ) < > | ; & * \ ~ " '和空间都需要逃避。 可以使用%s替换空格。

我已经编写了一个android命令行工具来执行此调用inputer 我的代码中的函数在这里(使用regex):

//e.g. convert string "hello world\n" to string "hello%sworld\n"
    char * convert(char * trans_string)
    {
        char *s0 = replace(trans_string, '\\', "\\\\");
        free(trans_string);
        char *s = replace(s0, '%', "\\\%");
        free(s0);
        char *s1 = replace(s, ' ', "%s");//special case for SPACE
        free(s);
        char *s2 = replace(s1, '\"', "\\\"");
        free(s1);
        char *s3 = replace(s2, '\'', "\\\'");
        free(s2);
        char *s4 = replace(s3, '\(', "\\\(");
        free(s3);
        char *s5 = replace(s4, '\)', "\\\)");
        free(s4);
        char *s6 = replace(s5, '\&', "\\\&");
        free(s5);
        char *s7 = replace(s6, '\<', "\\\<");
        free(s6);
        char *s8 = replace(s7, '\>', "\\\>");
        free(s7);
        char *s9 = replace(s8, '\;', "\\\;");
        free(s8);
        char *s10 = replace(s9, '\*', "\\\*");
        free(s9);
        char *s11 = replace(s10, '\|', "\\\|");
        free(s10);
        char *s12 = replace(s11, '\~', "\\\~");
        //this if un-escaped gives current directory !
        free(s11);
        char *s13 = replace(s12, '\¬', "\\\¬");
        free(s12);
        char *s14 = replace(s13, '\`', "\\\`");
        free(s13);
    //  char *s15 = replace(s14, '\¦', "\\\¦");
    //  free(s14);
        return s14;
}

答案 2 :(得分:0)

我写了一个简单的oneliner来逃避输入文本:

"Hello, world.".replace(/[()<>|;&*\\~"'$]/g, function (match) { return ("\\" + match); }).replace(/ /g, "%s");
//

您可能需要调整它或添加更多转义字符。