Bash读取转义字符和普通字符

时间:2013-03-29 22:32:39

标签: bash shell input io

我想在按任意键时读取bash,无论是箭头键,数字,字母还是标点符号,而无需按Enter键。

这是我提出的最接近的,除了当按下转义键时,它会溢出到下一个输入中。此外,转义键将读取但不会回显。

#!/bin/bash

read -r -n 1 -d $'\n' -p 'input> ' line
echo -en "\n"
echo "$line"

1 个答案:

答案 0 :(得分:1)

有点hacky / dirty方式,但应该适用于用户交互式shell ...

read -n1 -s -p 'input> ' line; read -t 0.1 -n2 -s line2
line="$line$line2"

现在,您可以将<ESC>[A转换为字符串<UP>,而不是。

注意:如果stdin被重定向(例如,来自管道/文件......),它很可能会失败。