【发布时间】:2020-02-03 10:45:18
【问题描述】:
我要执行
cat database_dump_1.sql | docker exec -i my_postgres psql -U postgres
使用 Golang 的 exec.Command 方法。
我的代码是这样的:
options := []string{"out.sql", "|", "docker", "exec", "-i", "my_postgres", "psql", "-U", "postgres"}
cmd, err := exec.Command("cat", options...).Output()
if err != nil {
panic(err)
}
fmt.Println(string(cmd))
但这失败了。我想我无法逃脱“|”。我试过“\|”,但这也失败了。 我做错了什么??
【问题讨论】:
-
|不需要转义。错误是什么,this fails是什么意思? -
错误如下:
panic: exit status 1 goroutine 1 [running]: main.main() /Users/shubhamsaurav/Downloads/postgresDump/testsql.go:13 +0x143 exit status 2 . -
顺便说一句,您发布的内容不是一个命令后跟参数。这是一个完整的脚本。第一个命令的结果
cat带有参数database_dump_1.sql被传送到第二个命令docker...`。您是否尝试过按原样运行整个字符串? -
你的意思是这样的??
options := []string{"out.sql | docker exec -i my_postgres psql -U postgres"} cmd, err := exec.Command("cat", options...).Output() -
或者喜欢这个
cmd, err := exec.Command("cat out.sql | docker exec -i my_postgres psql -U postgres").Output()。 ???
标签: go