[英]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.