1
我想在bash中阅读任意键被按下,无论按下回车键,箭头键,数字,字母还是标点符号。Bash阅读转义字符和正常字符
这是我想出的最接近的,除了当按下转义键时,它溢出到下一个输入。另外,转义键将会读取但不会回显。
#!/bin/bash
read -r -n 1 -d $'\n' -p 'input> ' line
echo -en "\n"
echo "$line"
我想在bash中阅读任意键被按下,无论按下回车键,箭头键,数字,字母还是标点符号。Bash阅读转义字符和正常字符
这是我想出的最接近的,除了当按下转义键时,它溢出到下一个输入。另外,转义键将会读取但不会回显。
#!/bin/bash
read -r -n 1 -d $'\n' -p 'input> ' line
echo -en "\n"
echo "$line"
有点哈克/肮脏的方式,而应该努力为用户交互shell ......
read -n1 -s -p 'input> ' line; read -t 0.1 -n2 -s line2
line="$line$line2"
现在,它是由你来<ESC>[A
转换为字符串<UP>
与否。
注意:这很可能会失败,如果标准输入重定向(比如,从管/文件...)
“哈克/脏” ......几乎完美。 –
刚刚意识到类似的方法已经在TLDP:http://tldp.org/LDP/abs/html/escapingsection.html#BASHEK – anishsane
是的。然而,这个例子不适用于OS X,因为Mac上的读取时间需要是正整数。 TLDP程序工作的唯一方法是在第一次读取时间后读取时间可能非常短。 –