我正在努力在C#中转义adb shell命令行参数,我有一个命令行,必须按原样发送到EXE(ADB)以接收确切的响应。 我正在尝试使用C#中的ADB从电话获取IMEI号码。 我已经有一个工作的ADB库,只需要将命令作为字符串发送即可。 这就是我正在尝试的:
String cmd = "adb shell service call iphonesubinfo 1 | awk -F "'" '{print $2}' | sed '1 d' | tr -d '.' | awk '{print}' ORS=";
这是我到目前为止尝试过的:
String cmd = "adb shell service call iphonesubinfo 1 | awk -F \"'\" '{print $2}' | sed '1 d' | tr -d '.' | awk '{print}' ORS=";
谢谢
答案 0 :(得分:1)
在前面加一个@符号
更新:
string str = @"""'{print $2}'";
输出:
“'{{print $ 2}'
string str2 = "\"'{print $2}'";
输出:
“'{{print $ 2}'
简而言之,您确实必须对双引号使用转义命令。
更新2:
不传递字符串变量。将它们包含在char数组中,然后将其传递。
String cmd = "adb shell service call iphonesubinfo 1 | awk -F \"'\" '{print $2}' | sed '1 d' | tr -d '.' | awk '{print}' ORS=";
char[] cmdChar = cmd.ToCharArray();
然后传递该cmdChar。
答案 1 :(得分:0)
如果您使用文字字符串(以@前缀),则可以通过重复使用双引号。
因此,您有:
String cmd = @"adb shell service call iphonesubinfo 1 | awk -F ""'"" '{print $2}' | sed '1 d' | tr -d '.' | awk '{print}' ORS=";