繁体   English   中英

C ++程序需要来自stdin的输入,但是我想通过shell脚本管道/发送这些输入

[英]C++ program needs inputs from stdin, but I want to pipe/send these inputs from shell script

我有一个C ++程序,它以交互方式从用户(标准输入)读取各种输入,并且工作正常。 但是现在我需要从shell脚本(bash)执行此程序,并且只需要从此脚本传递这些输入,而不是从用户手动传递。 我的二进制名称是myprog,这是我在脚本中尝试过的名称。.但是它不起作用。

myprog << \
  __EOF__ | tail -n+21 | grep ":" >> logfile.log 2> /dev/null
   $bdy
   $bdm
   $bdd
   $bth
   $btm
   $bts
   $edy
   $edm
   $edd
   $eth
   $etm
   $ets

紧急行动

这些变量包含一些日期和时间,例如年= 2014,月01,小时= 04,分钟= 59和秒= 20

您的C ++程序无需执行任何其他操作,然后从stdin(对于C ++则为cin )读取数据。 您需要在bash shell上决定使用数据创建一个临时对象,并将其传递给运行从C ++源代码编译的可执行文件的进程。

使用这样的bash脚本

myprog << EOF | tail -n+21 | grep ":" >> logfile.log 2> /dev/null
foo
bar
EOF

请注意最后一行的末尾指示器与<<后面的确切距离。

这里是另一个例子:

Harper@AMSEL ~/Documents
$ cat fff
cat << EOF -b | tail >> logfile.log 2>/dev/null
this text is used
these chars too
EOF

Harper@AMSEL ~/Documents
$ sh ./fff

Harper@AMSEL ~/Documents
$ cat logfile.log
     1  this text is used
     2  these chars too

Harper@AMSEL ~/Documents

您可能必须检查命令的哪些参数在本地评估,以及在删除计算机上与ssh一起使用的参数。 上面的示例可能有助于将问题与myprog隔离开。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM