
使用 golang 的 exec.Command()时,发现它把我的参数都改成了 string 类型,其中的重定向符号 > 在执行过程中被改成了">"
希望执行的命令:nc "127.0.0.1" "8888" > "F:\newImage\android_data.dd"
实际执行的命令:nc "127.0.0.1" "8888" ">" "F:\newImage\android_data.dd"
所以想能不能用转义解决这个问题,可是网上找了很久都没找到,类似 & g t 转义成 > 这样的功能
希望大佬们支支招,在此不胜感激
1 lcdtyph Aug 8, 2019 via iPhone >本来就是保留字符啊,表示重定向的时候不需要转义 你用的什么 shell ? cmd 还是 ps |
3 fatttt Aug 8, 2019 创建 Command 的时候,制定 cmd 的输出成 "F:\newImage\android_data.dd" 文件的 fd. 另外,我觉得你这个用 cmd 太奇怪了.完全可以用 go 来实现你那个 nc 的功能: cOnn=net.Dial("tcp","127.0.0.1:8888") fd=os.Create("F:\newImage\android_data.dd") io.Copy(fd,conn) 代码大概是这样 |
4 lcdtyph Aug 8, 2019 via iPhone 好吧我才理解 lz 的意思… 感觉你需要的是 cmd /c nc a.b.c.d port > xxx (没有 win 环境没法测试 |
6 chenexe OP @fatttt 感谢你提供的方法,不过因为是用 adb forward 进行端口转发的,然后手机作为服务端用 dd 与 nc 命令发送数据到 PC,在 pc 端不用 nc 命令的话 获取文件就比较复杂了 |
7 ysc3839 Aug 8, 2019 via Android ">" 重定向是 shell 的功能,你要确认的是 exec.Command() 会不会启动 shell 来执行。 从你给出的结果来看是不会的,那就得手动执行 shell。 比如 bash -c "command" cmd /c "command" |