Jas*_*n R 38 pipe shell-script stdin
我有一个可以启动用户交互式 shell 的可执行文件。我想在 shell 启动时先注入一些命令,然后允许用户进行交互式会话。我可以使用以下方法轻松做到这一点echo
:
echo "command 1\ncommand 2\ncommand3" | ./shell_executable
Run Code Online (Sandbox Code Playgroud)
这几乎有效。问题是,一旦完成回显我的命令,为进程的标准输入提供数据的 echo 命令就会命中 EOF。这个 EOF 会导致 shell 立即终止(就像您在 shell 中按下了 Ctrl+D 一样)。
有没有办法将这些命令注入 stdin 而不会导致 EOF 之后?
Gow*_*ham 45
在stackoverflow的类似问题中找到了这个聪明的答案
(echo -e "cmd 1\ncmd 2" && cat) | ./shell_executable
这就是诀窍。cat
将输出泵echo
入 shell_executable 的输入流并等待更多输入直到 EOF。
jw0*_*013 21
最干净的方法可能是寻找类似bash
的--rcfile
选项。将您的自定义命令放在您的自定义文件中,并将其传递给交互式 shell 以在启动时运行。
如果不存在这样的选项,您还可以尝试以下操作:
cat custom_commands_file - | ./shell_executable
Run Code Online (Sandbox Code Playgroud)
cat
将解释-
为标准输入。