当我用&输入一些文字时然后我的完整文字进入编辑框。
D:\ Apps \ Android-SDK \ tools> adb shell输入文本hello& hello 'hello'不被识别为内部或外部命令, 可操作程序或批处理文件。
只是打招呼。但另一个&和/或你好的字符没有输入。
当我键入以下内容时 adb设备和adb设备 它将提供2个输出。
adb shell输入文本值应采用其他格式,例如引号或其他内容。
我如何输入此值&字符?
答案 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");
//
您可能需要调整它或添加更多转义字符。