我正在创建一种类似于以下内容的交互式教程:
echo "What do you press if you want to move one word backwords in bash?"
read ans
if [ "$ans" == "ESCb" ]; then
echo RIGHT!
else
echo WRONG!
fi
现在,如何在字符串文字中输入ESC字符(ASCII十进制)? ESC
肯定不起作用。
我理解我最好使用另一种语言,但这是一项任务,需要使用bash脚本。
答案 0 :(得分:3)
在bash中,您可以使用$'...'
引号:
echo $'\eb' | xxd
与输入 Alt + b 输入进行比较
read x
echo "$x" | xxd
答案 1 :(得分:3)
你有几种方法:
使用bash的ANSI C expansions:
if [ "$ans" == $'\eb' ];
^[
。使用printf
,可以解释various character sequences:
$ printf '%b' '\e' | od -c
0000000 033
0000001
$ printf '%b' '\033' | od -c
0000000 033
0000001
$ printf '%b' '\x1B' | od -c
0000000 033
0000001