最近有一个需求,shell终端输入^X切换到另一个登陆界面。

如何判断输入的是^加上其他字母成为要解决的问题。

查了一堆资料,发现可以这样判断:

#!/bin/sh

echo Please input ^X:
read a
echo $a
if [ $a = $'\030' ];then
        echo ACK 
else
        echo NAK
fi

其中\030是^X的八进制值。

要查看一个不可见字符的值,可以用od命令

例如shell终端执行:

input a; echo $a | od -t c

输入^X

得到结果:

  0000000 030 012
  0000002

其中030为^A的值,012为\n的值

-t是type的意思。参数c代表显示字符,d代表以十进制显示,x代表以十六进制显示