这应该是一个简单的问题,但是我还没有找到合适的答案。
在我编写的程序中,我通过以下方式从用户那里获得一条线:
std::string str;
std::getline(std::cin, str);
这是我在程序中获得的唯一输入。
我需要编写一个bash脚本来测试一些用户输入,但是我不确定如何将脚本中指定的字符串推送到我的程序中,因此我的程序将字符串视为在命令行中输入的字符串。
脚本看起来像:
#!/bin/sh
echo "running test"
//somehow direct string specified here into my program
有人可以帮我指出正确的方向吗?
答案 0 :(得分:1)
使用外壳程序pipeline:
echo "some input" | ./myprogram
通常,当您运行./myprogram
时,其标准输入连接到tty(终端)。
在外壳中使用管道时,它会将程序的标准输入连接到先前程序的标准输出。
由于默认情况下echo
包含换行符,因此您的程序将看到
some input\n
后跟文件结尾。
答案 1 :(得分:1)
除了管道选项外,您还可以使用此处文档:
./myprogram <<EOF-MARKER
some input
EOF-MARKER
请注意,您可以通过这种方式发送多行(所有内容都取决于文件末尾的标记字符串)。
如果您实际上是在使用bash(不是某些brand-X外壳程序),则可以使用here字符串(请注意,使用三重字符{<
而不是double字符):
./myprogram <<<"some input"