我想在shell脚本中暂停输入,并提示用户进行选择.标准的"是,否或取消"类型问题.如何在典型的bash提示符中完成此操作?
我永远不会记得我是怎么做的,因为它对我来说很少见.但是在C或C++中,从标准输入读取字符而不等待换行符的最佳方法是什么(按回车键).
理想情况下,它也不会将输入字符回显到屏幕上.我只想捕捉击键而不影响控制台屏幕.
不确定我是否应该将它放在stackoverflow或unix.stackexchange上,但我在这里发现了一些类似的 问题,所以这里就是这样.
我正在尝试创建一个由.bashrc调用的脚本,它允许我根据单个击键选择两个选项中的一个.这通常不会很难但我希望对应于这两个选项的两个键是空格并输入.
这是我到目前为止所得到的:
#!/bin/bash
SELECT=""
while [[ "$SELECT" != $'\x0a' && "$SELECT" != $'\x20' ]]; do
echo "Select session type:"
echo "Press <Enter> to do foo"
echo "Press <Space> to do bar"
read -s -N 1 SELECT
echo "Debug/$SELECT/${#SELECT}"
[[ "$SELECT" == $'\x0a' ]] && echo "enter" # do foo
[[ "$SELECT" == $'\x20' ]] && echo "space" # do bar
done
Run Code Online (Sandbox Code Playgroud)
如果我按下enter,space,backspace和x,我得到的是以下输出:
:~$ bin/sessionSelect.sh
Select session type:
Press <Enter> to start/resume a screen session
Press <Space> …
Run Code Online (Sandbox Code Playgroud) 我知道如何使用事件来测试按键的位置,但在C中我从未发现如何做到这一点.
我真正想要的是一个听取上,下,左,右键的Keylistener.我需要它在Linux中工作,所以没有Windows库.如果可能的话,不使用第三方库对我来说是最好的选择.
int main(){
//关键监听器{
// if(key == up){//做某事}
// if(key == down){//做某事}
// if(key == left){//做某事}
// if(key == right){//做某事}
//}
}