使用 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 2019-08-08 11:24:20 +08:00 via iPhone
>本来就是保留字符啊,表示重定向的时候不需要转义
你用的什么 shell ? cmd 还是 ps |
3
fatttt 2019-08-08 11:31:07 +08:00
创建 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 2019-08-08 11:35:14 +08:00 via iPhone 1
好吧我才理解 lz 的意思…
感觉你需要的是 cmd /c nc a.b.c.d port > xxx (没有 win 环境没法测试 |
6
CurChen OP @fatttt 感谢你提供的方法,不过因为是用 adb forward 进行端口转发的,然后手机作为服务端用 dd 与 nc 命令发送数据到 PC,在 pc 端不用 nc 命令的话 获取文件就比较复杂了
|
7
ysc3839 2019-08-08 16:17:12 +08:00 via Android
">" 重定向是 shell 的功能,你要确认的是 exec.Command() 会不会启动 shell 来执行。
从你给出的结果来看是不会的,那就得手动执行 shell。 比如 bash -c "command" cmd /c "command" |