【发布时间】:2013-03-29 22:32:39
【问题描述】:
我想在 按下任何键时在 bash 中阅读,无论是箭头键、数字、字母还是标点符号,而不按 Enter。
这是我想出的最接近的,除了当按下转义键时,它会溢出到下一个输入。此外,转义键会读取但不会回显。
#!/bin/bash
read -r -n 1 -d $'\n' -p 'input> ' line
echo -en "\n"
echo "$line"
【问题讨论】:
我想在 按下任何键时在 bash 中阅读,无论是箭头键、数字、字母还是标点符号,而不按 Enter。
这是我想出的最接近的,除了当按下转义键时,它会溢出到下一个输入。此外,转义键会读取但不会回显。
#!/bin/bash
read -r -n 1 -d $'\n' -p 'input> ' line
echo -en "\n"
echo "$line"
【问题讨论】:
有点hacky/肮脏的方式,但应该适用于用户交互式shell...
read -n1 -s -p 'input> ' line; read -t 0.1 -n2 -s line2
line="$line$line2"
现在,由您决定是否将 <ESC>[A 转换为字符串 <UP>。
注意:如果标准输入被重定向(例如,从管道/文件...),它很可能会失败
【讨论】:
myread 并将其用作 line=`myread`...