boost::process::system 可以支持用分号分隔的 bash 命令吗?

can boost::process::system support bash commands separated by a semicolon?

代码:

#include <boost/system/process.hpp>  
int main() {  
  boost::process::system bp("echo foo; echo bar");  
}  

输出:
富;回声栏

期望的输出:

酒吧

我收到一个字符串,其中包含 1:MANY 到 运行 的命令,用分号分隔;正如 运行 在 shell 终端中一样。有没有办法告诉 boost::process 这样解释字符串命令?

是的,我会使用明确的 bash:

Live On Coliru

#include <boost/process.hpp>
namespace bp = boost::process;

int main() {
    bp::child c(
        bp::search_path("bash"),
        std::vector<std::string>{
            "-c", "echo foo; for a in {1..10}; do echo \"bar $a\"; done"});
    c.wait();
}

版画

foo
bar 1
bar 2
bar 3
bar 4
bar 5
bar 6
bar 7
bar 8
bar 9
bar 10