我在文件中添加了一个简单的函数.bashrc
,并使用命令将其绑定到组合键bind
。该函数提示用户使用进行输入read
,如下所示:
myscript() {
read -p "Enter input text: " input_text
echo "$input_text"
}
然后我将这个函数绑定到Ctrl+G组合键,bind
如下所示:
bind -x '"\C-g":myscript'
当我按下Ctrl+时G,函数被调用,提示符"Enter input text: "
被显示,但我似乎无法输入任何内容。光标只是闪烁,什么也没发生。
我不确定是什么导致了这个问题。如何在使用键绑定调用的 Bash 函数中启用输入?
更新:
感谢斯内尔,我更新了该函数如下:
myscript() {
echo -n "Enter input text: "
read -e input_text
echo "$input_text"
}
现在它可以按预期运行了。
答案1
听起来您遇到的问题可能与您在后台作为 shell 命令运行该函数而不是在前台作为交互进程运行该函数有关。
您可以尝试通过在命令中myscript
添加选项来修改您的函数以在前台运行,如下所示:-i
read
myscript() {
read -ei "Enter input text: " input_text
echo "$input_text"
}
这将启用命令的交互式编辑read
,当通过键绑定调用该函数时,您可以输入。
或者,您可以修改bind
命令以使用选项在前台运行该函数-x
,如下所示:
bind -x '"\C-g":myscript; bash -i'
最后的命令bash -i
将启动一个新的交互式 shell 会话,当通过键绑定调用该函数时,该会话将允许您输入。