C 程序需要STDIN的输入,但我想从Shell脚本中输送/发送这些输入

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

本文关键字:输入 脚本 Shell 程序 STDIN      更新时间:2023-10-16

我有一个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

eof

这些变量包含一些日期和时间,例如年= 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

请注意最后一行的末端指示器之间和<<后面的端指示灯之间的确切macth。

这里是一个进一步的示例:

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隔离。