我想在条件语句中使用用户输入的特殊字符。我试过:
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