hes*_*son 0 bash shell process
如果我有一个C++程序期望在运行时期间从控制台输入cin,我该如何从shell脚本自动化这个输入?我还需要将其输出存储在一个文件中,但这部分很容易.我已经研究了不同的方法,包括将它回显到/ proc中pid的文件描述符,但似乎没有任何效果.
这是我到目前为止:
#!/bin/sh
g++ -o runme source.cpp
echo <<EOT | ./runme > output
expected program input
more expected program input
even more
EOT
Run Code Online (Sandbox Code Playgroud)
请注意,每行输入都需要在程序中通过cin读取"输入按键",我假设应该发生这种情况,因为脚本中的程序输入由新行分隔.在这里,程序被执行但是在文件中产生相同的输出,无论我在EOT之前放置什么,所以它没有像预期的那样被输入到程序的cin中.
您想要的I/O重定向形式称为此文档,并不涉及echo:
./runme <<EOF
expected program input
more expected program input
even more
EOF
Run Code Online (Sandbox Code Playgroud)
使用输出重定向:
./runme <<EOF > output
expected program input
more expected program input
even more
EOF
Run Code Online (Sandbox Code Playgroud)
如果你坚持使用echo,原则上你可以这样做:
echo -e "expected program input\nmoreexpected program input\neven more\n" | ./runme
Run Code Online (Sandbox Code Playgroud)
其中该-e选项启用反斜杠转义的解释,例如\n参数中指示的换行符echo.
| 归档时间: |
|
| 查看次数: |
1732 次 |
| 最近记录: |