如何使用特殊字符作为用户输入

如何使用特殊字符作为用户输入

我想在条件语句中使用用户输入的特殊字符。我试过:

read -p "press arrow up" foo
if [ $foo == "^[[A" ]; then echo yes; fi

它并没有实现我想要的效果。

答案1

在 bash 中,你可以使用ANSI-C 引用

#!/bin/bash

read -p "press arrow up " foo

if [ "$foo" = $'\e[A' ]; then
  echo 'yes'
fi

欲了解更详细的版本,请参阅BASH 问题:使用 read,我可以捕获单个字符或箭头键(在键盘按下时)

答案2

不是特别漂亮,但你可以比较十六进制值。

要找出向上箭头的十六进制值,foo手动分配并运行

xxd <<< "$foo"

将输出复制粘贴到您的脚本并用于xxd -r恢复十六进制值:

up_arrow="$(xxd -r <<< "00000000: 1b5b 410a")"
if [ "$foo" = "$up_arrow" ]; then echo yes; fi

相关内容