gpt4 book ai didi

linux - 在 bash 中运行时,如何在特定点向脚本发送击键?

转载 作者:太空宇宙 更新时间:2023-11-04 10:07:13 24 4
gpt4 key购买 nike

我正在尝试编写脚本以在 Linux 中自动安装程序。它需要在安装过程中进行一些用户输入。大多数都是直截了当的简单 yn .我将这些回复添加到文件 responses.txt然后像这样将它通过管道传递给安装脚本:./start < responses.txt .

但是,安装过程中的某个特定点会出现复杂情况。该程序要求用户点击 CTRL+C如果他们想跳过特定组件的安装,则在特定时间点。如果你不打 CTRL+C在此有限的时间窗口内,脚本继续安装此组件。

我想安装没有这个组件的程序。如何发送 CTRL+C在此时间窗口内以编程方式?

根据我有限的理解,我的自动化解决方案需要一种方法来检测安装何时要求用户发送这些击键,然后我的脚本应该发送某种中断?

甚至可以做这样的事情吗?

最佳答案

Ctlr C 字符在键盘上输入时会导致设备驱动程序或伪终端发送中断信号 (SIGINT)。因此,实际的 Ctlr C 永远不会到达程序。异常(exception)情况是终端已设置为原始模式,但这种情况不太可能发生。

您可以使用 kill 命令发送 SIGINT 信号:

kill -2 pid

您在脚本中面临的挑战是找到您需要终止的进程并将信号与其余输入交错。

如果您知道进程 ID 的名称,则可以使用 psgrep 找到进程 ID。

您可以通过用脚本替换简单的文本文件并将该脚本的输出通过管道传输到您的安装程序来尝试交错固定输入和终止信号。例如:

( echo "response 1"
echo "response-2"
sleep 1
pid=$(ps -something | grep something | sed something)
kill -2 $pid
) | installer

这可能会让您了解如何完成。

但是,正如其他地方所建议的那样,有些工具可以为您完成此类工作。 echo

关于linux - 在 bash 中运行时,如何在特定点向脚本发送击键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51595708/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com