gpt4 book ai didi

linux - 将输入重定向到后台运行的脚本

转载 作者:太空宇宙 更新时间:2023-11-04 12:01:36 27 4
gpt4 key购买 nike

我写了一个调整窗口大小的脚本,它需要方向和分数形式的值,如下所示:

resize.sh -h 1/2

它按预期工作。我还添加了 -k标志,这意味着脚本需要用户输入,如下所示:

resize.sh -k -h

在脚本中:

read -rsn 2 fraction

我对其进行解析以获取分子和分母的值。

这在命令行下效果很好,但背后的想法是绑定(bind) resize.sh -k -h一些组合键,并通过以下两个键作为输入。但是当我从键盘运行脚本时,它作为与任何 tty 无关的后台进程运行,因此 read 无法获取其输入。从键盘运行后,是否有任何方法可以将全局输入重定向到后台进程。

到目前为止我尝试了什么:

  • 重定向到/proc/$$/fd/0,但没有用。

  • 重定向当前事件的 tty stdin 以读取,如下所示:
    read -rsn 2 fraction < /dev/pts/0

这确实有效,但问题是并非所有窗口都是终端窗口,例如网页浏览器。

如果我的问题不清楚,请随时要求进一步说明或详细信息,在此先感谢 :)

最佳答案

您可以使用命名管道进行进程通信。我制作了一个示例脚本,其中后台进程是一个函数。

#!/bin/bash
pipe_name=/tmp/mypipe$$
mkfifo "${pipe_name}"

resize()
{
read fraction < "${pipe_name}"
echo "Resize window to fraction=${fraction}"
}

resize &
read -p "Enter your fraction: "
echo "${REPLY}" > "${pipe_name}"

rm "${pipe_name}"

关于linux - 将输入重定向到后台运行的脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52190724/

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