将字符串从BASH脚本(C 程序)推入CIN

Pushing a string into cin from a bash script (C++ program)

本文关键字:程序 推入 CIN 字符串 BASH 脚本      更新时间:2023-10-16

这应该是一个简单的问题,但是我还没有找到引。

在我编写的程序中,我通过以下方式从用户那里获得了一条线。

std::string str;
std::getline(std::cin, str);

这是我在程序中获得的唯一输入。

我需要编写一个bash脚本来测试某些用户输入,但是我不确定如何将脚本中指定的字符串推向我的程序,以便我的程序像在命令行中输入那样的字符串。

脚本看起来像:

#!/bin/sh
echo "running test"
//somehow direct string specified here into my program 

有人可以帮助我指向正确的方向吗?

使用外壳管道:

echo "some input" | ./myprogram

通常,当您运行./myprogram时,其标准输入连接到TTY(终端(。

当您在外壳中使用管道时,它将程序的标准输入连接到上述程序的标准输出

由于默认情况下echo包括一个newline字符,您的程序将看到

some inputn

接着文件结束。

除了管道选项外,您还可以使用此处的文档:

./myprogram <<EOF-MARKER
some input
EOF-MARKER

请注意,您可以以这种方式发送多行(所有内容都达到文件末端标记字符串(。

如果您实际使用的是bash(不是一些brand-x壳(,则可以使用此处的弦(请注意三重<而不是双重(:

./myprogram <<<"some input"