如何在C#中转义adb shell命令行字符串

时间:2018-06-30 20:32:18

标签: c# adb

我正在努力在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=";

谢谢

2 个答案:

答案 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=";